【发布时间】:2020-01-07 15:15:43
【问题描述】:
我有一个春季批处理项目,我必须从两个 .txt 文件中读取,一个有很多行,另一个是一个控制文件,其中包含应该从第一个文件中读取的行数。我知道我必须使用分区来处理这些文件,因为第一个非常大,我需要将它分割并能够在它失败时重新启动它,但我不知道读者应该如何处理这些文件,因为这两个文件他们的线条没有相同的宽度。
所有文件的行中都没有标题或分隔符,因此我必须根据主要在第一个中的范围获取字段。
我的一个疑问是我是否应该在同一个阅读器中阅读两者?以及在使用同一个阅读器的情况下,我应该如何设置阅读器FixedLengthTokenizer和DefaultLineMapper来处理这两个文件??
这些是输入文件和控制文件的示例
- 输入文件
09459915032508501149343120020562580292792085100204001530012282921883101
txt 文件最多可以包含 50000 行
- 控制文件 00128*
它只有一行
谢谢!
【问题讨论】:
-
你能为每个文件提供一个例子吗? “控制文件”和输入文件的大小是多少?我在问一个常见的技术是缓存参考数据(参见stackoverflow.com/a/52644962/5019386)并在常规的面向块的步骤中使用它(以避免重新读取每个项目的控制文件或参考表)。除此之外,你的输出是什么?你真的需要分区吗?
-
@ Mahmoud Ben Hassine - 输出是几个 txt 文件,其中输入文件的行根据过滤器分布在其中。至于隔断的使用,一个项目开始由另一个人做,离开了公司,然后把这个项目分配给我,最初做的人比我最近对spring batch的了解要多得多开始使用它,并为项目建立了patition的使用,因为需要能够在失败的情况下重新启动它我也认为它是正确的选择。
标签: spring spring-batch