001 //Title: XML-Tabellenimport 002 //Version: 003 //Copyright: Copyright (c) 2002 004 //Author: Altmann 005 //Company: GTDS 006 //Description: 007 008 import java.sql.Connection; 009 import java.sql.PreparedStatement; 010 import java.sql.SQLException; 011 import java.sql.Timestamp; 012 import java.util.Hashtable; 013 014 import org.apache.xerces.parsers.DOMParser; 015 import org.w3c.dom.Document; 016 import org.w3c.dom.Element; 017 import org.xml.sax.SAXException; 018 019 public class XMLTabImp { 020 021 public static void main (String args[]) 022 throws java.io.IOException, SQLException, SAXException { 023 024 String usrpass = args[0]; 025 026 String username = usrpass.substring(0, usrpass.indexOf("/")); 027 String password = usrpass.substring(usrpass.indexOf("/")+1, usrpass.indexOf("@")); 028 String database = usrpass.substring(usrpass.indexOf("@")+1); 029 030 Document xml; 031 032 DOMParser dp = new DOMParser(); 033 dp.parse(args[1]); 034 xml = dp.getDocument(); 035 036 037 Connection conn = DBSession.getConnection(username, password, database); 038 Hashtable dataTypes = new Hashtable(); 039 ChildElementWalker cew = new ChildElementWalker(xml.getDocumentElement(), null); 040 Element tab = cew.getNextElement(); 041 042 String stat = "INSERT INTO " + tab.getTagName(); 043 String colList = ""; 044 String valList = ""; 045 046 cew = new ChildElementWalker(tab, null); 047 Element desc = cew.getNextElement(); 048 ChildElementWalker descW = new ChildElementWalker(desc, null); 049 while(true) { 050 Element column = descW.getNextElement(); 051 if(column == null) { 052 break; 053 }; 054 String colName = column.getTagName(); 055 String dataType = column.getAttribute("datatype"); 056 dataTypes.put(colName, dataType); 057 colList += ", " + colName; 058 valList += ", ?"; 059 //System.err.println(colName); 060 } 061 stat = stat + "(" + colList.substring(2) + ") VALUES (" + valList.substring(2) + ")"; 062 System.err.println(stat); 063 PreparedStatement ins = conn.prepareStatement(stat); 064 int count = 0; 065 while(true) { 066 Element row = cew.getNextElement(); 067 if(row == null) { 068 break; 069 }; 070 ChildElementWalker colw = new ChildElementWalker(row, null); 071 int i = 0; 072 while(true) { 073 Element column = colw.getNextElement(); 074 if(column == null) { 075 ins.execute(); 076 ins.clearParameters(); 077 break; 078 }; 079 String colName = column.getTagName(); 080 // System.err.print(colName); 081 String dataType = (String) dataTypes.get(colName); 082 i++; 083 String value = null; 084 if(column.getFirstChild() != null) { 085 value = column.getFirstChild().getNodeValue(); 086 } 087 if(dataType.equals("DATE")) { 088 if(value==null) { 089 ins.setTimestamp(i, null); 090 } else { 091 ins.setTimestamp(i, Timestamp.valueOf(value)); 092 } 093 } else if(dataType.equals("NUMBER")) { 094 if(value==null) { 095 ins.setString(i, null); 096 } else { 097 ins.setDouble(i, Double.valueOf(value).doubleValue()); 098 } 099 }else { 100 ins.setString(i, value); 101 } 102 } 103 count++; 104 } 105 System.err.print(count+ " rows inserted"); 106 ins.close(); 107 } 108 109 }