使用SystemCommandTasklet将大平面文件拆分为小文件

时间:2014-12-31 18:39:29

标签: spring-batch flat-file

是否有人已使用Spring Batch SystemCommandTasklet将大型平面文件拆分为小文件。

我想知道这是一个非常耗时的过程吗?

我们希望将文件拆分为1亿条记录(每条记录包含15个字段)。

请真正感谢您的任何帮助。

此致

香卡

1 个答案:

答案 0 :(得分:1)

我在我的演讲JSR-352,Spring Batch和你(https://www.youtube.com/watch?v=yKs4yPs-5yU)中这样做。在那里,我将SystemCommandTasklet与OS X的split命令结合使用。您可以在此处查看存储库中的示例配置:https://github.com/mminella/jsr352-springbatch-and-you

具体示例如下:

<bean id="fileSplittingTasklet" class="org.springframework.batch.core.step.tasklet.SystemCommandTasklet" scope="step">
    <property name="command" value="split -a 5 -l 10000 #{jobParameters['inputFile']} #{jobParameters['stagingDirectory']}"/>
    <property name="timeout" value="60000"/>
    <property name="workingDirectory" value="/tmp/jsr_temp"/>
</bean>

这是拆分文件的首选方法。文件系统/操作系统级工具比通过java进程管道文件快得多。