java - 如何处理大型结果集中的数据而不将它们全部加载到内存中?

标签 java sql jdbc resultset

我的数据库托管在 mysql 服务器上,我使用 Java 来分析数据。

我的问题:执行“Select”查询后将返回 2.5 GB 的结果集。我不想将所有数据加载到内存中。那么有什么方法可以连续检索数据并处理它吗?

“按行限制”将不是一个选项,因为这 2.5 GB 数据是从 4 个表中连接和检索的。因此“按行限制”会大大增加我的总运行时间。

我尝试过statement.setFetchSize(50),但它似乎没有按我的预期工作。

如有任何建议,我们将不胜感激!谢谢!

最佳答案

语句 stmt = readOnlyConn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);

stmt.setFetchSize(Integer.MIN_VALUE);

上面的代码解决了我的问题。感谢您的帮助!

关于java - 如何处理大型结果集中的数据而不将它们全部加载到内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16860677/

相关文章:

java - 如何使用 UCanAccess 从 Java 将两个字符串插入到我的 Access 数据库中?

java - 根据我当前的位置每秒更新 TextView

java - 错误: Field dataSource in required a bean of type 'javax.activation.DataSource' that could not be found

android - 如何将Mysql JDBC Driver 到android studio

java - OpenCV python 到 java

java - ClassDiagramm 0..1 到 0..1 关系缺少转换为 java 代码的步骤

c# - 是否可以在两个 excel 工作表之间设置外键?

sql - 从 Oracle 的 Select (not Distinct) 中的第一列中删除重复项

sql - Postgresql 按第一列排序,但第二列最后有空值或零

java - JDBC 连接无法从 apache Spark 连接 Teradata