Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何处理大型ResultSet中的数据而不将其全部加载到内存中?_Java_Sql_Jdbc_Resultset - Fatal编程技术网

Java 如何处理大型ResultSet中的数据而不将其全部加载到内存中?

Java 如何处理大型ResultSet中的数据而不将其全部加载到内存中?,java,sql,jdbc,resultset,Java,Sql,Jdbc,Resultset,我的数据库托管在mysql服务器上&我使用Java分析数据 我的问题:执行“选择”后,查询将返回2.5 GB的结果集。我不想把所有的数据都加载到内存中。那么,有没有什么方法可以让我不断地检索和处理数据呢 “按行限制”将不是选项,b/c此2.5 GB数据是从4个表联接和检索的。所以“按行限制”将大大增加我的总运行时间 我试过statement.setFetchSize(50),但它似乎没有像我预期的那样工作 任何建议都将不胜感激!谢谢 语句stmt=readOnlyConn.createState

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

我的问题:执行“选择”后,查询将返回2.5 GB的结果集。我不想把所有的数据都加载到内存中。那么,有没有什么方法可以让我不断地检索和处理数据呢

“按行限制”将不是选项,b/c此2.5 GB数据是从4个表联接和检索的。所以“按行限制”将大大增加我的总运行时间

我试过statement.setFetchSize(50),但它似乎没有像我预期的那样工作


任何建议都将不胜感激!谢谢

语句stmt=readOnlyConn.createStatement(仅java.sql.ResultSet.TYPE_FORWARD_), java.sql.ResultSet.CONCUR\u只读)

stmt.setFetchSize(Integer.MIN_值)

上面的代码解决了我的问题。谢谢你的帮助

BlockquoteStatement stmt=readOnlyConn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,java.sql.ResultSet.CONCUR_READ_ONLY); stmt.setFetchSize(Integer.MIN_值); 上面的代码解决了我的问题。谢谢你的帮助

是的,但是如果你使用postgres,你还必须关闭自动提交!(工作2小时后实现=D)


我会增加您的堆大小。如果你需要处理2.5 GB的数据,那么拥有8-32 GB的内存听起来并不是很多。你想看看这里:嗨,Jaroslav,这并没有提供问题的答案-它确实属于对另一个答案的评论,但你需要赢得更多的声誉才能,因此,在此期间,你需要集中精力发布高质量的原始答案和问题,以赢得声誉。