У меня есть программа в scala, которая подключается к базе данных оракула с помощью ojdbc, запрашивает таблицу и пытается вставить записи из java.sql.resultSet в другую таблицу в отдельном соединении jdbc.
//conn1 to oracle: java.sql.Connection = oracle.jdbc.driver.T4CConnection@698122b2
//conn2 to another non-oracle database: java.sql.Connection = com.snowflake.client.jdbc.SnowflakeConnectionV1@6e4566f1
Моя попытка получить результаты из таблицы оракула:
val stmt1 = conn1.createStatement()
stmt1.setFetchSize(3000)
val sql1 = "select userid from nex.users"
val result = stmt1.executeQuery(sql1)
и код для попытки вставки записей из результата в отдельную базу данных и таблицу через jdbc:
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()
}
Что меня озадачивает, так это то, что во многих примерах использования jdbc синтаксис почти такой же, но во второй таблице я вижу в 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
была пустой до запуска вашего кода? - person copeg   schedule 02.09.2016select userid, count(*) from nex.users group by userid
, будут ли идентификаторы пользователей уникальными в этой таблице? - person homerman   schedule 03.09.2016