Я пытаюсь выполнить простой Spring Batch tutorial, но я хочу читать два файла вместо одного файла при создании объекта Person
.Spring-Boot Spring-Batch MultiResourceItemReader для объединения файлов
Я просматривал примеры, и все примеры, которые я видел, которые используют два или более файла, явно используют несколько файлов, которые соответствуют одному и тому же формату. В моем случае у меня есть два файла: 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 содержит относительный п-й lastname.csv или данные не гарантируют быть синхронизированы? –
это возможно, только если есть синхронизация в обоих файлах - например, n-я запись в первом файле соответствует n-й записи в файле seconn –