我正在尝试使用 java.sql.PreparedStatement
和 executeQuery
从表中获取所有行,但下载在达到 4294967295(2^32- 1)行;我已经尝试过返回 0 的 preparedStatement.getMaxRows()
,这意味着没有获取限制;
根据 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 native 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
关于Java sql getPreparedStatement 在 4294967295 行后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50633146/