#spring-batch
#spring-batch
Вопрос:
у меня есть два csv-файла. один файл содержит порядок, такой как дата, источник, назначение, сумма. второй csv-файл, имеющий порядок, такой как источник, дата, сумма, назначение, так как я могу выполнить сопоставление шаблонов с помощью spring batch?
вот мой код для сопоставления одного csv.
public class PaymentFieldSetMapper implements FieldSetMapper<Payment> {
@Override
public Payment mapFieldSet(FieldSet fieldSet) throws BindException {
final Payment payment = new Payment();
payment.setDate(fieldSet.readDate("date"));
payment.setSourceAccountNo(fieldSet.readString("source"));
payment.setDestinationAccountNo(fieldSet.readString("destination"));
payment.setAmount(fieldSet.readBigDecimal("amount"));
return payment;
}
мой вопрос в том, как можно одновременно считывать данные из двух файлов и записывать их в БД?
например, данные моих двух файлов показаны ниже:
one.csv
дата источник сумма
назначения 02-10-2016 Ченнаи Пуна 1000
02-10-2016 Бангалор hyd 2000
two.csv
дата источника сумма назначение
Ченнаи 02-10-2016 1000 Пуна
Бангалор 02-10-2016 2000 hyd
Комментарии:
1. Основываясь на имени файла, мы можем узнать, каков его формат. Если да, мы легко можем создать разделитель, а затем перейти к Reader для обработки. Но нам нужно указать, какой считыватель следует использовать для какого файла.
2. взгляните на PatternMatchingCompositeLineMapper. К сожалению, этот Mapper НЕ основан на регулярных выражениях, поэтому вам необходимо зарегистрировать mapper для файла format first example для каждой цифры (‘0*’, ‘1*’,…’9*’) а затем зарегистрировать ‘*’ для картографа второго формата. Вы также можете написать свой собственный сопоставитель и использовать PatternMatchingCompositeLineMapper в качестве отправной точки. Это не так сложно