我需要从一个数据库中读取几百万行并将它们写入另一个。我想用PreparedStatement.addBatch
大批量(可能是 1000 行)进行写入。我不需要他们参与交易。我正在用 Scala 2.9.2 编写代码。
一种方法如下:
val sourceResultSet = ...
val targetStatement = targetConnection.prepareStatement(...)
var rowCount = 0
while (sourceResultSet.next()) {
// Read values from sourceResultSet and write them to targetStatement
targetStatement.addBatch()
rowCount += 1
if (rowCount % 1000 == 0) {
targetStatement.executeBatch()
rowCount = 0
}
}
我怎样才能以更实用的方式做到这一点,而不使用var rowCount
? 我还需要考虑 RAM 的使用;我正在读取几百万行,因此任何涉及一次将所有源行都存储在内存中的解决方案都会失败。