我有一个查询,它返回结果集中保存的数百万条记录。我必须处理(插入/更新)这些记录。我不想一次性插入所有记录,而是希望将结果集拆分为每个 500 条记录的 block ,然后存储在 ArrayList 或 Vector 中,并按某个时间处理这 500 条记录。时间。
如何将结果集分割成 block 并存储在 ArrayList
或 Vector
中而不循环遍历百万条记录?
我找到了答案,必须使用 CachedRowSet 而不是结果集。并使用设置setPageSize
CachedRowSet crs = new CachedRowSetImpl();
crs.setPageSize(500);
crs.execute(conHandle);
然后使用
while(crs.nextPage()) {
collection obj = crs.toCollections();
}
这将确保我们可以将大数据处理成较小的 block
但是我这里有一个问题,如何通过传递连接对象来填充crs,其中提到查询字符串??
最佳答案
取决于您的 SQL 方言。例如,在 PostgreSQL 中,SELECT 有 OFFSET
和 LIMIT
子句:
SELECT * FROM table LIMIT 500 OFFSET 0;
您仍然需要某种循环来生成查询来获取所有数百万条记录。
关于java - 如何在不循环的情况下将 Java 中的结果集拆分为 block (每个 block 500 行)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5993974/