六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 186|回复: 0

initHsqlDB()

[复制链接]

升级  6.67%

16

主题

16

主题

16

主题

秀才

Rank: 2

积分
60
 楼主| 发表于 2013-1-14 23:44:48 | 显示全部楼层 |阅读模式
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();
}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表