?? dbrestore.java
字號:
//Copyright 1998 John Wiley and Sons, Inc.import java.io.*;import java.util.*;import java.net.*;import java.sql.*; import org.w3c.dom.*;import javax.xml.parsers.*;public class DBRestore extends Object{ Connection connection; Statement statement; String xmlFile; boolean deleteExisting; boolean verbose; public DBRestore(String url, String driverName, String user, String passwd, String file, boolean delete,boolean verb) { try { //load the driver Class.forName(driverName); connection = DriverManager.getConnection(url, user, passwd); statement = connection.createStatement(); xmlFile = file; deleteExisting = delete; verbose = verb; if(verbose) System.out.println("Connected to "+url); } catch (Exception exp) { System.out.println("Error connecting: "+exp); } } public void performRestore() { DocumentBuilder docBuilder; Document doc; Node dbElement; Node curTable,curRow,curField; NodeList tables; int i,maxTables; NodeList rows; int j,maxRows; NodeList fields; int k,maxFields; String tableName; String rowName; String fieldName,fieldType; String data; StringBuffer sql = new StringBuffer(); boolean gotOne; try { docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); doc = docBuilder.parse(xmlFile); //set dbElement to the root database element dbElement = doc.getDocumentElement(); //get the table elements tables = dbElement.getChildNodes(); maxTables = tables.getLength(); for(i=0;i<maxTables;i++) { curTable = tables.item(i); //skip any text elements surrounding tables if(!"TABLE".equals(curTable.getNodeName())) continue; tableName = curTable.getAttributes().getNamedItem("NAME").getNodeValue(); if(verbose) System.out.println("Restoring: "+tableName); if(deleteExisting) { if(verbose) System.out.println("\tDeleting: "+tableName); statement.executeUpdate("delete from "+tableName); } rows = curTable.getChildNodes(); maxRows = rows.getLength(); for(j=0;j<maxRows;j++) { curRow = rows.item(j); if(!"ROW".equals(curRow.getNodeName())) continue; sql.setLength(0); sql.append("insert into "); sql.append(tableName); sql.append(" ("); fields = curRow.getChildNodes(); maxFields = fields.getLength(); gotOne = false; //Build the column names for the insert statement for(k=0;k<maxFields;k++) { curField = fields.item(k); fieldType = curField.getNodeName(); if(!"NUMERIC".equals(fieldType) &&!"TEXT".equals(fieldType)) continue; if(curField.getFirstChild()==null) continue; if(gotOne) sql.append(","); gotOne = true; fieldName = curField.getAttributes().getNamedItem("NAME").getNodeValue(); sql.append(fieldName); } sql.append(") values ("); gotOne = false; //Build the column values for the insert statement for(k=0;k<maxFields;k++) { curField = fields.item(k); fieldType = curField.getNodeName(); if(!"NUMERIC".equals(fieldType) &&!"TEXT".equals(fieldType)) continue; //Skip blank tags if(curField.getFirstChild()==null) continue; if(gotOne) sql.append(","); gotOne = true; data = null; if("TEXT".equals(fieldType)) { data = curField.getFirstChild().getNodeValue(); if(data == null) data = ""; else { data = URLDecoder.decode(data); data = StringUtils.escape(data); } sql.append("\'"); sql.append(data); sql.append("\'"); } else if("NUMERIC".equals(fieldType)) { sql.append(curField.getFirstChild().getNodeValue()); } } sql.append(")"); if(verbose) System.out.println("\t"+sql.toString()); statement.executeUpdate(sql.toString()); } } } catch (Exception exp) { System.out.println("Error performing backup: "+exp); exp.printStackTrace(); } } public void close() { try { statement.close(); connection.close(); if(verbose) System.out.println("Disconnected."); } catch (Exception exp) { System.out.println("Error closing DB connection: "+exp); exp.printStackTrace(); } } public static void main(String args[]) { String url=null,driver=null,user=null; String password=null,file=null; boolean doDelete=false; boolean doVerbose=false; DBRestore restore; int i,max; if ((args != null) && (args.length > 1)) { max = args.length; for (i = 0;i < max;i++) { if (args[i].equals("-url")) url = args[++i]; else if (args[i].equals("-driver")) driver = args[++i]; else if (args[i].equals("-user")) user = args[++i]; else if (args[i].equals("-password")) password = args[++i]; else if (args[i].equals("-file")) file = args[++i]; else if (args[i].equals("-D")) doDelete = true; else if (args[i].equals("-verbose")) doVerbose = true; } } if((url == null)||(driver == null)||(file == null)) { System.out.println("usage: DBRestore" +" -url url" +" -driver driverClassName" +" [-user user]" +" [-password pass]" +" -file XMLFileName" +" [-D]" +" [-verbose]"); System.exit(0); } restore = new DBRestore(url,driver,user,password,file,doDelete,doVerbose); restore.performRestore(); restore.close(); }}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -