我使用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的值,我认为这实际上取决于您的用例以及语句对数据库的影响。您可能需要尝试使用不同的值,以查看它如何影响性能。

10-08 01:56