【发布时间】:2011-08-18 16:09:50
【问题描述】:
我有一个 java 程序,它比较本地 Oracle 数据库中的数据并将其移动到由在线供应商托管的外部 MS SQL 数据库。
目前,该程序连接到 MS SQL 数据库,执行 SELECT * FROM myTABLE 并将结果放入二维数组中。然后在 Oracle 中创建一个临时表,并使用 for 循环将数据插入到临时表中:
for (int ii = 0; ii < arr.length(); ii++){
query = "insert into myTable_temp values "+values_from_array;
stmt.executeQuery();
}
使用MINUS 语句查找差异:
query = "select * from ora_table minus select * from myTable_temp";
rs = stmt.executeQuery();
然后使用 insert_into_mssql() 方法将结果插入回 MS SQL 表中:
while (rs.next()){
query = "insert into myTable values "+ values_from_rs
insert_into_mssql(query);
}
除了我使用的表有 220,000 行之外,这很好用。因此加载数组、插入临时表、运行减号语句、然后将所有内容重新插入 mssql 表需要很长时间。
有没有更有效的方法来做到这一点?或者让这个更快的方法? (由于安全限制,dblink 或任何直接连接都不起作用)
【问题讨论】:
-
您的组织真的考虑过这些安全限制吗?数据库链接只需要一组额外的权限,并加密您的密码。您是否为这个 Java 程序在不同的服务器上创建了一个额外的帐户,并授予它对两个数据库的权限?密码是否加密?
标签: java sql-server oracle