2016-11-29 60 views
2

我正在处理许多没有固定标题/列的CSV文件,并说我可以用10列获得file1.csv,用50列获得file2.csv。Spring批处理 - 是否有可能在FlatFileReader中有一个动态列?

我无法预先知道列的数量,我无法为每种文件类型创建特定的作业,我的输入将是一个黑盒子:一堆CSV将有一个X列数从10到无穷大。

由于我想使用Spring Batch自动导入这些CSV,我想知道它是否可能?我知道我必须获得固定数量的列,因为处理器和我需要将我的数据序列化到POJO中,然后才将它发回给作者。

我的处理器可以序列化数组吗?除了发送一个简单的对象,我可以得到一个对象数组,并且在我的工作结束时,我将拥有一个对象数组的数组?

你觉得呢?

感谢

回答

2

创建自己LineTokenizer实现。 DelimitedLineTokenizer需要预定义数量的列。如果你创建自己的,你可以像你想要的那样动态。你可以在这里阅读更多关于LineTokenizer的文档:http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/item/file/transform/LineTokenizer.html

+0

听起来不错!我会看看那个界面,谢谢 – TheCyberXP

+0

请注意,如果你使用'DelimitedLineTokenizer',你可以使用[setStrict(false)](https://docs.spring.io/spring-batch/trunk/apidocs/ org/springframework/batch/item/file/transform/AbstractLineTokenizer.html#setStrict-boolean-),这样行中的标记数量就不必与定义的列数相匹配。 – badjr

相关问题