![](/img/trans.png)
[英]Spring Batch : How to read footer of CSV file and validation using FlatFileItemReader
[英]How do I call FlatFileItemReader multiple times with different file names in Spring Batch?
目标:拥有一个可以被调用1到N次的文件阅读器,在Spring批处理中具有不同的文件名,而不必每次读取都关闭/重新打开文件。
到目前为止,我有:
我使用以下bean来粗略读取该程序,以读取CSV文件:
@Bean
public ItemReader<DataLoadRecordClass> dataLoadFileItemReader() {
this.inputRecords = new DataLoadRecordListClass();
FlatFileItemReader<DataLoadRecordClass> reader = new FlatFileItemReader<DataLoadRecordClass>();
reader.setEncoding("UTF-8");
reader.setLinesToSkip(1); //skip header line
reader.setResource(new FileSystemResource(String.format(this.fileSystemBasePath,storeName) + this.fileBasePath + this.inFileName));
LineMapper<DataLoadRecordClass> dataFileLineMapper = buildLineMapper();
reader.setLineMapper(dataFileLineMapper);
return reader;
}
StoreName和inFileName将在运行时指定,通常至少需要运行4个商店,但要求运行1到N个商店。
显然,在编写代码时,它仅适用于1个存储区和1个文件。 我如何缩放它,使其可以在1到N个商店中运行,每个商店中有1到N个文件并可以并行运行? 我不想为每个可能的存储和文件创建bean,因为它们之间的唯一区别是文件名和路径。
谢谢!
这使我可以传递变量
@Bean
@StepScope
public FlatFileItemReader<DataLoadRecordClass> dataLoadFileItemReader(@Value("#{jobParameters['myParam']}" String storeNameEntry) {
..etc..
}
最大的麻烦是您不能为此使用ItemReader,必须返回FlatFileItemReader,否则将收到一个错误消息,指出它无法打开阅读器。 这仅发生在StepScope中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.