相关疑难解决方法(0)

如何从巨大的表中读取所有行?

处理数据库中的所有行(PostgreSQL)时遇到问题.我得到一个错误:org.postgresql.util.PSQLException: Ran out of memory retrieving query results.我认为我需要读取所有行的小块,但它不起作用 - 它只读取100行(下面的代码).怎么做?

    int i = 0;      
    Statement s = connection.createStatement();
    s.setMaxRows(100); // bacause of: org.postgresql.util.PSQLException: Ran out of memory retrieving query results.
    ResultSet rs = s.executeQuery("select * from " + tabName);      
    for (;;) {
        while (rs.next()) {
            i++;
            // do something...
        }
        if ((s.getMoreResults() == false) && (s.getUpdateCount() == -1)) {
            break;
        }           
    }
Run Code Online (Sandbox Code Playgroud)

java postgresql jdbc

48
推荐指数
3
解决办法
10万
查看次数

Spring JDBC支持和大型数据集

当使用各种JDBC模板方法之一时,我对如何迭代/滚动大型结果集(不适合内存)感到困惑.即使没有直接暴露Iterable接口,我至少也会期望在查询执行时调用RowCallbackHandler的实例,不是在它完成之后(或堆overfloats).

我确实看过这个(虽然在精神上类似于这篇关于堆栈溢出的帖子,但我没有改变任何内容)和春季论坛中的这篇文章.后者似乎建议在游标获取数据时确实应该调用回调处理程序.然而,我的测试显示没有这样的行为

该数据库是Oracle10g.我使用的是11.1.0.7.0-Production驱动程序和Spring 2.5.6.SEC01.任何人都想知道如何迭代结果集,最好是保持RowMapper等的映射逻辑?

java oracle spring jdbc

19
推荐指数
3
解决办法
2万
查看次数

标签 统计

java ×2

jdbc ×2

oracle ×1

postgresql ×1

spring ×1