使用FlatFileItemReader Spring Batch读取不同的CSV文件

时间:2017-05-23 12:28:41

标签: spring csv spring-batch flatfilereader

我试图找到我正在寻找的问题的解决方案,但我发现它或者我可能会跳过的机会。如果您可以将我重定向到解决方案页面,请帮助我。

批量输入:我有位于不同路径的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,并选择相应的linemapper ..?

职位定义:

<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 个答案:

没有答案