我遇到了内存问题,因为我正试图从 Netezza 数据库中读取一个巨大的结果集。 Netezza 是否像 MySQL 一样支持任何类型的“流式”ResultSet?如果不是,是否会像这样限制获取大小?:
stmt.setFetchSize(50);
conn.setAutoCommitMode(false);
最佳答案
如果您想提取行以存储在文件中,那么最好的办法是使用远程外部表。
这是一个通过 JDBC 创建临时远程外部表的示例。这将调用 JDBC 驱动程序提供的批量导出/加载功能,并创建一个竖线分隔的文本文件。
create external table 'c:\mytest.txt'
USING (DELIMITER '|' REMOTESOURCE 'JDBC' ) as
select *
from table1;
您可以使用 conn.createStatement().execute 调用它,并且您可能必须将更改文件规范添加到 c:\mytest.txt 以转义现有的反斜杠。
您可以在 documentation here 中阅读有关外部表的更多信息.
顺便说一下,您可以使用 setFetchSize。不过,我不确定它能否解决您的内存问题。
关于java - Netezza 流式处理结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35585571/