我正在使用Spring-Batch
读取 csv 文件,格式化内容并将其写入数据库,例如:
StepBuilder<T, T> builder = stepBuilderFactory.get("step")
.<T, T>chunk(100)
.reader(flatFileItemReader)
.processor(processor)
.writer(jpaItemWriter);
csv 包含一个 ID 列。如何修改reader
基于该 ID 的块?例子:
#id, #value
1, first
1000, second
1001, second
1005, second
在这种情况下,块只会读取第一行,然后提交,然后继续。
是否可以通过文件中的值应用分块?
我使用自定义CompletionPolicy和PeekableItemReader做了同样的事情。
代码背后的想法是查看下一个项目,执行下一个元素读取并检查值更改。
当值发生变化时,
true
从返回CompletionPolicy.isComplete()
。重要提示:此策略必须注册为步骤监听器!