在我的 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行。有什么想法吗?
答案 0 :(得分:0)
我不确定spring批处理,但是就您使用sql而言,您应该可以使用"limit"参数。
答案 1 :(得分:0)
Spring Batch通过我们的JdbcPagingItemReader
本机执行此操作。您还可以使用JdbcCursorItemReader
流式传输记录(而不是一次返回所有记录)。第一页处理为您生成限制查询。您可以在以下文档中详细了解JdbcPagingItemReader
:https://docs.spring.io/spring-batch/4.0.x/reference/html/readersAndWriters.html#pagingItemReaders