ojdbcを使用してoracleデータベースに接続し、表を問い合せ、別の表の別の表にjava.sql.resultSetのレコードを挿入しようとするプログラムがscalaにあります。 jdbc接続。jdbc java.sql.preparedstatement挿入時の行の複製
//conn1 to oracle: java.sql.Connection = [email protected]
//conn2 to another non-oracle database: java.sql.Connection = [email protected]
Oracleテーブルから取得する結果での私の試み:JDBC経由で別のデータベースやテーブルへの結果からレコードを挿入しようとするため
val stmt1 = conn1.createStatement()
stmt1.setFetchSize(3000)
val sql1 = "select userid from nex.users"
val result = stmt1.executeQuery(sql1)
やコード:
val insert_sql = "insert into test.users (userid) values (?)"
val ps = conn2.prepareStatement(insert_sql)
val batchSize = 3000
var count = 0
while (result.next) {
ps.setInt(1, result.getInt(1))
ps.addBatch()
count += 1
if (count % batchSize == 0) ps.executeBatch()
}
何ですstumping meこれはjdbcを使用する多くの例ではまったく同じ構文ですが、2番目のテーブルでは最初のテーブルから元の行数の4倍を見ています。
select userid, count(*) from test.users group by userid
1 4
2 4
3 4
4 4
5 4
6 4
etc
あなたは 'test.users'テーブルの前にコードを実行する空でしたか? – copeg
はい、私はいつでもテーブルを切り捨てて、コードで何か新しいものを試して、0行があることを確認します – tchoedak
あなたには明らかな質問は残念ですが、 'select userid、count(*)をnex.usersグループby userid'は、そのテーブルでユニークなユーザーIDですか? – hsl