как я могу сопоставить два разных csv-файла с шаблоном, используя сопоставление шаблонов в spring batch?

#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 в качестве отправной точки. Это не так сложно