initHsqlDB()

private void initHsqlDB() throws Exception {
// 創建HSQL數據庫並初始化用戶信息。
String path = targetDB.getAdd();
File dir = new File(path);
// 如果沒有這個目錄,創建這個目錄
if(!dir.exists()){
System.out.println("make dirs:"+path);
dir.mkdirs();
}
// 如果有子目錄,刪除所有子目錄
File[] subDirFile = dir.listFiles();
for (int i = 0; i < subDirFile.length; i++) {
System.out.println("delect "+ subDirFile[i].getAbsolutePath());
subDirFile[i].delete();
}
Class.forName("org.hsqldb.jdbc.JDBCDriver");
Connection hsqlConn = DriverManager.getConnection("jdbc:hsqldb:file:"
+ this.targetDB.getAdd() + java.io.File.separator
+ this.targetDB.getDbName(), "SA", "");
for (int k = 0; k < users.size(); k++) {
String user = users.get(k).getUserName().toUpperCase();
String pwd = users.get(k).getPassword();
// 創建HSQLDB的Schema和用戶
Statement stmt = hsqlConn.createStatement();
String sql = "CREATE USER " + user + " PASSWORD '"
+ pwd + "' ADMIN";
System.out.println(sql);
stmt.execute(sql);
sql = "CREATE SCHEMA " + user
+ " AUTHORIZATION DBA";
stmt.execute(sql);
System.out.println(sql);
hsqlConn.commit();
}
hsqlConn.close();

//創建存儲oracle數據結構信息表。
for(int k = 0; k < users.size(); k++){
String user = users.get(k).getUserName().toUpperCase();
String pwd = users.get(k).getPassword();
hsqlConn = targetDB.getConn(user, pwd);
Statement stm = hsqlConn.createStatement();
stm.execute(HsqlDataBase.UBHAVE_TABINFO_DDL);
stm.execute(HsqlDataBase.UBHAVE_SEQINFO_DDL);
hsqlConn.commit();
hsqlConn.close();
}


// 如果不存在文件dbscrpit.sql,則創建,並把所有表的select寫入文件(需要轉換所有表)
File file = new File("dbscrpit.sql");
if (file.exists())
return;
FileOutputStream fos = null;
// 分析數據庫,創建文件:dbscrpit.sql
file.createNewFile();
System.out.println(file.getAbsolutePath());

System.out.println(file.getAbsolutePath());
fos = new FileOutputStream(file);
OutputStreamWriter writer = new OutputStreamWriter(fos);
Connection conn = this.originDB.getConn("topeng", "topeng");
if (null == conn) {
System.out.println("connect database faile");
return;
}
String sqlTables = "";
for (DBUser user : this.users) {
sqlTables = "select TABLE_NAME from dba_tables where OWNER='"
+ user.getUserName().toUpperCase() + "'";

Statement stmt = conn.createStatement();
System.out.println(sqlTables);
ResultSet rs = stmt.executeQuery(sqlTables);
while (rs.next()) {
String wsql = "select * from " + rs.getString("TABLE_NAME")
+ ";\n";
System.out.println(wsql);
writer.write(wsql);
writer.flush();
}

}
writer.close();
}
發佈了63 篇原創文章 · 獲贊 0 · 訪問量 1171
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章