| 1 5 package org.h2.tools; 6 7 import java.io.BufferedWriter ; 8 import java.io.FileWriter ; 9 import java.io.PrintWriter ; 10 import java.sql.Connection ; 11 import java.sql.DriverManager ; 12 import java.sql.ResultSet ; 13 import java.sql.SQLException ; 14 import java.sql.Statement ; 15 16 import org.h2.message.Message; 17 import org.h2.util.IOUtils; 18 import org.h2.util.JdbcUtils; 19 import org.h2.util.StringUtils; 20 21 27 public class Backup { 28 29 private void showUsage() { 30 System.out.println("java "+getClass().getName() 31 + " -url <url> -user <user> [-password <pwd>] [-script <file>] [-options <option> ...]"); 32 } 33 34 50 public static void main(String [] args) throws SQLException { 51 new Backup().run(args); 52 } 53 54 private void run(String [] args) throws SQLException { 55 String url = null; 56 String user = null; 57 String password = ""; 58 String script = "backup.sql"; 59 String options1 = null, options2 = null; 60 for(int i=0; args != null && i<args.length; i++) { 61 if(args[i].equals("-url")) { 62 url = args[++i]; 63 } else if(args[i].equals("-user")) { 64 user = args[++i]; 65 } else if(args[i].equals("-password")) { 66 password = args[++i]; 67 } else if(args[i].equals("-script")) { 68 script = args[++i]; 69 } else if(args[i].equals("-options")) { 70 StringBuffer buff1 = new StringBuffer (); 71 StringBuffer buff2 = new StringBuffer (); 72 i++; 73 for(; i<args.length; i++) { 74 String a = args[i]; 75 String upper = StringUtils.toUpperEnglish(a); 76 if(upper.startsWith("NO") || upper.equals("DROP")) { 77 buff1.append(' '); 78 buff1.append(args[i]); 79 } else { 80 buff2.append(' '); 81 buff2.append(args[i]); 82 } 83 } 84 options1 = buff1.toString(); 85 options2 = buff2.toString(); 86 } else { 87 showUsage(); 88 return; 89 } 90 } 91 if(url==null || user==null || script == null) { 92 showUsage(); 93 return; 94 } 95 if(options1 != null) { 96 executeScript(url, user, password, script, options1, options2); 97 } else { 98 execute(url, user, password, script); 99 } 100 } 101 102 105 public static void executeScript(String url, String user, String password, String fileName, String options1, String options2) throws SQLException { 106 Connection conn = null; 107 Statement stat = null; 108 try { 109 org.h2.Driver.load(); 110 conn = DriverManager.getConnection(url, user, password); 111 stat = conn.createStatement(); 112 String sql = "SCRIPT " + options1 + " TO '" + fileName + "' " + options2; 113 stat.execute(sql); 114 } catch(Exception e) { 115 throw Message.convert(e); 116 } finally { 117 JdbcUtils.closeSilently(stat); 118 JdbcUtils.closeSilently(conn); 119 } 120 } 121 122 131 public static void execute(String url, String user, String password, String script) throws SQLException { 132 Connection conn = null; 133 Statement stat = null; 134 FileWriter fileWriter = null; 135 try { 136 org.h2.Driver.load(); 137 conn = DriverManager.getConnection(url, user, password); 138 stat = conn.createStatement(); 139 fileWriter = new FileWriter (script); 140 PrintWriter writer = new PrintWriter (new BufferedWriter (fileWriter)); 141 ResultSet rs = stat.executeQuery("SCRIPT"); 142 while(rs.next()) { 143 String s = rs.getString(1); 144 writer.println(s + ";"); 145 } 146 writer.close(); 147 } catch(Exception e) { 148 throw Message.convert(e); 149 } finally { 150 JdbcUtils.closeSilently(stat); 151 JdbcUtils.closeSilently(conn); 152 IOUtils.closeSilently(fileWriter); 153 } 154 } 155 156 } 157 158 | Popular Tags |