Java sql getPreparedStatement остановлен после 4294967295 строк - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь извлечь все строки из таблицы, используя java.sql.PreparedStatement и executeQuery, но загрузка остановилась после достижения 4294967295 (2 ^ 32-1) строк;Я пробовал preparedStatement.getMaxRows(), который возвращает 0, означает, что нет предела выборки;

в соответствии с https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#getMaxRows(), «Если этот предел превышен, лишние строки отбрасываются молча».это именно то, что случилось с моей работой, кто-нибудь знает, что еще я должен отлаживать, и почему я достигаю максимального предела строк, когда этот параметр равен 0?

Спасибо.

1 Ответ

0 голосов
/ 01 июня 2018

Обнаружена проблема, согласно https://www.exasol.com/support/browse/SOL-108

Осторожно: если вы выполняете одиночные загрузки с более чем 4 294 967 295 строк, вам следует использовать собственный драйвер JDBC MSSQL из-за ошибки в JTDS (обратите внимание, что число4 294 967 295 - максимальное значение для 32-разрядного целого числа без знака).Если бы вы использовали JTDS для таких больших нагрузок, было бы импортировано только 4 294 967 295 строк, а остальные были бы проигнорированы без появления ошибки.

Драйвер MSSQL JDBC и пример здесь: https://www.microsoft.com/en-us/sql-server/developer-get-started/java/rhel/step/2.html

...