我试图为我正在寻找的问题找到解决方案,但我没有找到它或者我可能会跳过它。如果您可以将我重定向到解决方案页面,请帮助我。
批处理的输入:我有位于不同路径的 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 文件。