【问题标题】:How to get large data with JDBC and PostgreSQL如何使用 JDBC 和 PostgreSQL 获取大数据
【发布时间】:2013-04-17 12:58:14
【问题描述】:

我正在尝试从我的表中获取数百万个数据,并且我正在使用 Java Play Framework 2.0,但存在一些问题。当我为我的查询设置限制时,它运行良好,如果我询问所有数据,它会抛出错误,例如

Exception in thread "pool-3-thread-1" java.lang.OutOfMemoryError: Java heap space

有人可以帮我吗?

【问题讨论】:

  • 不,我们不能,只要您不提供一些细节,例如发生异常的代码的 sn-p。

标签: java postgresql jdbc playframework


【解决方案1】:

引自手册:

默认情况下,驱动程序会立即收集所有查询结果。这对于大型数据集可能很不方便,因此 JDBC 驱动程序提供了一种将 ResultSet 基于数据库游标并仅获取少量行的方法

(强调我的)

该手册详细描述了如何配置驱动程序以不将所有内容加载到内存中:
http://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor

【讨论】:

  • 如果我想获取所有行怎么办?
  • @Sadik:我不明白这个问题。只需遍历所有这些。
【解决方案2】:

java.sql.Statement.setFetchSize 可能会有所帮助,具体取决于您的数据库。我不熟悉 Play Framework,但您可以使用 JDBC 设置 fetch size。

What does Statement.setFetchSize(nSize) method really do?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多