Parallel processing 如何在spring批处理中使用JdbcPagingItemReader中的limit和offset子句?

Parallel processing 如何在spring批处理中使用JdbcPagingItemReader中的limit和offset子句?,parallel-processing,spring-batch,Parallel Processing,Spring Batch,该表有超过2亿条记录,但我需要限制选择前500万条记录。我曾尝试使用jdbcCursorItemReader,它大约需要2-3小时来选择并使用单步分块处理将其写入csv文件,因此我选择使用spring批量提供的并行处理。 i、 通过让taskExecutor和JdbcPagingItemReader分别生成5个文件,每个文件的大小为百万,但问题是我无法在查询参数中指定limit和offset子句。请帮我做这个。我们也赞赏比这更好的方法 您不能在该读卡器中使用SQL LIMIT子句,因为读卡器

该表有超过2亿条记录,但我需要限制选择前500万条记录。我曾尝试使用jdbcCursorItemReader,它大约需要2-3小时来选择并使用单步分块处理将其写入csv文件,因此我选择使用spring批量提供的并行处理。
i、 通过让taskExecutor和JdbcPagingItemReader分别生成5个文件,每个文件的大小为百万,但问题是我无法在查询参数中指定limit和offset子句。请帮我做这个。我们也赞赏比这更好的方法



您不能在该读卡器中使用SQL LIMIT子句,因为读卡器本身会这样做。相反,SpringBatch在
JdbcPagingItemReader
中内置了该功能。要设置要处理的最大项数,可以使用
JdbcPagingItemReader#setMaxItemCount(5000000)
配置读卡器,如果存在偏移量,则可以设置
JdbcPagingItemReader#setCurrentItemCount(偏移量)
。也就是说,重新启动时,将使用在
ExecutionContext
中找到的任何值覆盖偏移量。您可以在这里的javadoc中了解更多信息:

非常感谢@MichealMinella。提供的链接对我帮助很大。