1 5 package org.h2.tools; 6 7 import java.io.File ; 8 import java.sql.Connection ; 9 import java.sql.DriverManager ; 10 import java.sql.SQLException ; 11 import java.sql.Statement ; 12 import org.h2.message.Message; 13 import org.h2.util.JdbcUtils; 14 15 21 public class CreateCluster { 22 23 private void showUsage() { 24 System.out.println("java "+getClass().getName() 25 + " -urlSource <url> -urlTarget <url> -user <user> [-password <pwd>] -serverlist <serverlist>"); 26 } 27 28 41 public static void main(String [] args) throws SQLException { 42 new CreateCluster().run(args); 43 } 44 45 private void run(String [] args) throws SQLException { 46 String urlSource = null; 47 String urlTarget = null; 48 String user = null; 49 String password = ""; 50 String serverlist = null; 51 for(int i=0; args != null && i<args.length; i++) { 52 if(args[i].equals("-urlSource")) { 53 urlSource = args[++i]; 54 } else if(args[i].equals("-urlTarget")) { 55 urlTarget = args[++i]; 56 } else if(args[i].equals("-user")) { 57 user = args[++i]; 58 } else if(args[i].equals("-password")) { 59 password = args[++i]; 60 } else if(args[i].equals("-serverlist")) { 61 serverlist = args[++i]; 62 } else { 63 showUsage(); 64 return; 65 } 66 } 67 if(urlSource==null || urlTarget==null || user==null || serverlist==null) { 68 showUsage(); 69 return; 70 } 71 72 execute(urlSource, urlTarget, user, password, serverlist); 73 } 74 75 85 public static void execute(String urlSource, String urlTarget, String user, String password, String serverlist) throws SQLException { 86 Connection conn = null; 87 Statement stat = null; 88 try { 89 org.h2.Driver.load(); 90 91 92 conn = DriverManager.getConnection(urlSource + ";CLUSTER=''", user, password); 94 conn.close(); 95 try { 96 conn = DriverManager.getConnection(urlTarget + ";IFEXISTS=TRUE", user, password); 97 conn.close(); 98 throw new Exception ("Target database must not yet exist. Please delete it first"); 99 } catch(SQLException e) { 100 } 102 103 106 String scriptFile = "backup.sql"; 107 Backup.execute(urlSource, user, password, scriptFile); 108 RunScript.execute(urlTarget, user, password, scriptFile, null, false); 109 new File (scriptFile).delete(); 110 111 conn = DriverManager.getConnection(urlSource, user, password); 113 stat = conn.createStatement(); 114 stat.executeUpdate("SET CLUSTER '" + serverlist + "'"); 115 conn.close(); 116 conn = DriverManager.getConnection(urlTarget, user, password); 117 stat = conn.createStatement(); 118 stat.executeUpdate("SET CLUSTER '" + serverlist + "'"); 119 } catch(Exception e) { 120 throw Message.convert(e); 121 } finally { 122 JdbcUtils.closeSilently(conn); 123 JdbcUtils.closeSilently(stat); 124 } 125 } 126 127 } 128 | Popular Tags |