处理数据库中的所有行(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程序来清理和合并表中的行.该表很大,大约500k行,我目前的解决方案运行速度非常慢.我想做的第一件事就是简单地获取一个表示我表中所有行的对象的内存数组.这是我正在做的事情:
这已经很久了.事实上,它甚至没有超过从1000到2000的第二个增量.查询需要永远完成(虽然当我直接通过MySQL浏览器运行相同的东西时它速度相当快).我已经有一段时间了,因为我直接使用了JDBC.有更快的替代方案吗?
我有一个包含 800 万条记录的数据库,我需要以特定方式处理这些记录,这些记录是用 Java 编写的。在查找了一些东西后,我发现了以下相关帖子:
这是我的代码,它返回存储在我的 MySQL 数据库的标签列中的项目:
public ResultSet getAllTags() {
String query = "SELECT Tags FROM dataset";
ResultSet rs = null;
try {
connection = ConnectionFactory.getConnection(DATABASE);
preparedStatement = connection.prepareStatement(query, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
preparedStatement.setFetchSize(Integer.MIN_VALUE);
rs = preparedStatement.executeQuery(query);
// following line is for testing, to see what comes out of the resultset
System.out.println("output: " + rs.getString(1));
return rs;
} catch (Exception ex) {
ex.printStackTrace();
return null;
} finally {
closeAll();
} …Run Code Online (Sandbox Code Playgroud)