【发布时间】:2015-10-27 12:30:24
【问题描述】:
我正在尝试遵循简单的Spring Batch tutorial,但我想在创建Person 对象时读取两个文件而不是单个文件。
我一直在查看示例,并且我看到的所有使用两个或多个文件的示例都明确使用遵循相同格式的多个文件。就我而言,我有两个文件,一个firstname.csv 和一个lastname.csv。我想从他们那里阅读(最好是一步)来创建我的Person。
所以例子显示:
@Bean
public ItemReader<Person> reader() {
FlatFileItemReader<Person> reader = new FlatFileItemReader<Person>();
reader.setResource(new ClassPathResource("sample-data.csv"));
reader.setLineMapper(new DefaultLineMapper<Person>() {{
setLineTokenizer(new DelimitedLineTokenizer() {{
setNames(new String[] { "firstName", "lastName" });
}});
setFieldSetMapper(new BeanWrapperFieldSetMapper<Person>() {{
setTargetType(Person.class);
}});
}});
return reader;
}
到目前为止我得到了什么:
@Bean
public ItemReader<Person> reader() {
MultiResourceItemReader<Person> multiResourceItemReader = new MultiResourceItemReader<Person>();
ClassPathResource[] resources = {new ClassPathResource("firstnames.csv"), new ClassPathResource("lastnames.csv")};
multiResourceItemReader.setResources(resources);
// Magic here ...
return multiResourceItemReader;
}
如何按照我的描述合并这些文件,而不是按照预期的格式合并所有文件?
【问题讨论】:
-
firstname.csv的第n行是否包含相对的第n行lastname.csv或数据不保证同步?
-
这只有在两个文件都同步的情况下才有可能——比如第一个文件中的第 n 条记录与第二个文件中的第 n 条记录匹配