如何遍历Java中的大型SQL结果集或一次获取X行数

时间:2019-06-13 12:13:10

标签: java sql-server spring spring-batch

在我的 Spring Batch 程序中,我执行一个 SQL 查询,从返回的结果集中获取一些信息,然后将其打印到文件中。

返回的行太多,因此查询性能不佳。

SELECT * 
FROM CIF
WHERE status > 1

此示例查询返回500,000行。

我尝试一次选择前5,000行:

SELECT TOP 5000
FROM CIF
WHERE status > 1

这里的问题是,如果我循环遍历,每次将获得相同的5,000行。我想不出一种方法来循环获取5,000行,将所需的信息打印到文件中,然后获取接下来的5,000行。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我不确定spring批处理,但是就您使用sql而言,您应该可以使用"limit"参数。

答案 1 :(得分:0)

Spring Batch通过我们的JdbcPagingItemReader本机执行此操作。您还可以使用JdbcCursorItemReader流式传输记录(而不是一次返回所有记录)。第一页处理为您生成限制查询。您可以在以下文档中详细了解JdbcPagingItemReaderhttps://docs.spring.io/spring-batch/4.0.x/reference/html/readersAndWriters.html#pagingItemReaders