我正在尝试使用java.sql.PreparedStatementexecuteQuery从表中获取所有行,但是下载达到4294967295(2 ^ 32-1)行后停止。我试过preparedStatement.getMaxRows()返回0,这意味着没有获取限制;

根据https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#getMaxRows(),“如果超过此限制,多余的行将被静默删除。”这听起来确实是我的工作发生了什么,有人知道我还应该调试什么,以及为什么当此设置为0时我达到了最大行数限制?

谢谢。

最佳答案

根据https://www.exasol.com/support/browse/SOL-108发现了问题

当心:如果您进行的单次加载的行数超过4,294,967,295,则由于JTDS中的错误,应使用MSSQL本机JDBC驱动程序(请注意,数字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

08-07 23:53