2

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

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

谢谢你。

4

1 回答 1

1

发现问题,根据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

于 2018-05-31T22:11:56.147 回答