我需要从一个数据库中读取几百万行,并将其写入到另一个。 我想用PreparedStatement.addBatch
做到大批量(也许1000行)写入。 我并不需要他们的交易。 我写在斯卡拉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的使用; 我读几百万行,因此任何解决方案,涉及都在同一时间在内存中源行的将失败。