我有一个Java程序,用于比较数据并将其从本地Oracle数据库移动到在线供应商托管的外部MS SQL数据库中。

当前,该程序使用SELECT * FROM myTABLE连接到MS SQL数据库,并将结果放入二维数组中。然后在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行外,此方法均工作正常。因此,需要很长时间才能加载数组,将其插入到temp表中,运行minus语句,然后将所有内容重新插入mssql表中。

有没有更有效的方法可以做到这一点?还是一种更快的方法?
(dblink或任何直接连接在安全性限制方面均不起作用)

最佳答案

是的,您使用的是哪个版本的MS SQL Server?因此,您可以查看SSIS或其他DTS软件。它使您可以快速准确地完成自己想要的事情。

07-26 09:09
查看更多