Чтение разных CSV-файлов с помощью FlatFileItemReader Spring Batch

Я пытался найти решение для проблемы, которую я ищу, но я не нашел его или шанс, что я мог пропустить. Помогите мне, если вы можете перенаправить меня на страницу решения.

Входные данные для пакета: у меня есть файлы TRADES.csv, PORTFOLIO.csv, которые расположены по разным путям.

Как я реализовал это в настоящее время: В настоящее время я написал, что класс CSVReader имеет два FlatFileItemReader, которые определены ниже.

<beans:bean id="porfolioReader"
    class="org.springframework.batch.item.file.FlatFileItemReader">
    <beans:property name="lineMapper" ref="lineMapperForPortfolio"></beans:property>
    <beans:property name="strict" value="false"></beans:property>
    <beans:property name="recordSeparatorPolicy"
        ref="csvRecordSeparatorPolicy"></beans:property>
    <beans:property name="linesToSkip" value="1"></beans:property>
    <beans:property name="encoding" value="ISO-8859-1"></beans:property>
</beans:bean>

<beans:bean id="tradeReader"
    class="org.springframework.batch.item.file.FlatFileItemReader">
    <beans:property name="lineMapper" ref="lineMapperForTrades"></beans:property>
    <beans:property name="strict" value="false"></beans:property>
    <beans:property name="recordSeparatorPolicy"
        ref="csvRecordSeparatorPolicy"></beans:property>
    <beans:property name="linesToSkip" value="1"></beans:property>
    <beans:property name="encoding" value="ISO-8859-1"></beans:property>
</beans:bean>

На основании пути к входному файлу я открываю соответствующий ридер и создаю FieldSet.

Случай, который я ищу: я хочу прочитать эти CSV-файлы за один шаг и создать FieldSet, чтобы в процессоре я снова мог разделить данные на список объектов TRADES и PORTFOLIO. Есть ли способ, которым я могу сделать FlatFileItemReader способным найти то, что выбрано CSV, и выбрать соответствующий линейный преобразователь..?

Определение работы:

<batch:step id="tradeStep1" allow-start-if-complete="true">
        <batch:tasklet>
            <batch:chunk reader="csvReader"
                processor="csvProcessor" writer="csvWriter"
                commit-interval="1" />
        </batch:tasklet>
        <batch:next on="*" to="tradeStep2" />
        <batch:fail on="FAILED" />
</batch:step>

TradeStep2 будет архивировать обработанные файлы CSV.

0 ответов

Другие вопросы по тегам