あるデータベースから数百万行を読み取り、別のデータベースに書き込む必要があります。PreparedStatement.addBatch
大きなバッチ(おそらく1000行)で書き込みを行うために使用したいと思います。それらがトランザクションに含まれている必要はありません。Scala 2.9.2 でコードを書いています。
これを行う 1 つの方法は次のとおりです。
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 の使用量も考慮する必要があります。数百万行を読み取っているため、一度にすべてのソース行をメモリに格納するソリューションは失敗します。