我使用i
变量将批处理操作除以100,这是我的第一批jdbc代码:
PreparedStatement oraclePs = oracleConn.prepareStatement("insert ...");
ResultSet sybaseRs = sybasePs.executeQuery();
int i = 1;
final int step = 100;
while (sybaseRs.next()) {
oraclePs.setDate(1, sybaseRs.getDate("..."));
...
oraclePs.addBatch();
if (i++ % step == 0)
oraclePs.executeBatch();
}
oraclePs.executeBatch();
oraclePs.close();
oracleConn.commit();
那是正确的技术吗?
如果
oraclePs.executeBatch();
结束于100边界,最终的out of loop i
是否正确?您如何选择
step
?对于Oracle,我看到“ Oracle SQL Developer” IDE通过此步骤导入CSV ... 最佳答案
如果您知道还有什么要处理,最好只执行最后的executeBatch
:
}
if(i % step != 0)
oraclePs.executeBatch();
oraclePs.close();
oracleConn.commit();
除此之外,它对我来说看起来很好。
至于找到
step
的值,我认为这实际上取决于您的用例以及语句对数据库的影响。您可能需要尝试使用不同的值,以查看它如何影响性能。