Spring 批量处理两个不同结构的文件
Spring Batch Two Files With Different Structure
我在 spring 批处理中有一个项目,我必须从两个 .txt 文件中读取,一个有很多行,另一个是控制文件,其中包含应从第一个文件读取的行数文件。我知道我必须使用分区来处理这些文件,因为第一个文件非常大,我需要将其划分并能够在它失败时重新启动它,但我不知道 reader 应该如何处理这些文件文件,因为这两个文件的行宽不同。
None 个文件的行中有 header 或分隔符,所以我必须根据范围主要在第一个中获取字段。
我的疑问之一是我是否应该在同一个 reader 中阅读两者?在使用相同 reader 的情况下,我应该如何设置 reader FixedLengthTokenizer 和 DefaultLineMapper 来处理这两个文件??
这些是输入文件和控制文件的例子
- 输入文件
09459915032508501149343120020562580292792085100204001530012282921883101
txt 文件最多可包含 50000 行
- 控制文件
00128*
它只有一根线
谢谢!
I must read from two .txt files, one has many lines and the other is a control file that has the number of lines that should be read from the first file
以下是解决您的用例的可能方法:
- 创建一个读取控制文件的第一步(tasklet),并将要读取的行数放在作业执行上下文中(与下一步共享)
- 创建第二个步骤(面向块),步骤范围为 reader,配置为仅读取第一步计算的行数(从作业执行上下文中获取值)
您可以在此处阅读有关在步骤之间共享数据的更多信息:https://docs.spring.io/spring-batch/docs/4.2.x/reference/html/common-patterns.html#passingDataToFutureSteps
我在 spring 批处理中有一个项目,我必须从两个 .txt 文件中读取,一个有很多行,另一个是控制文件,其中包含应从第一个文件读取的行数文件。我知道我必须使用分区来处理这些文件,因为第一个文件非常大,我需要将其划分并能够在它失败时重新启动它,但我不知道 reader 应该如何处理这些文件文件,因为这两个文件的行宽不同。
None 个文件的行中有 header 或分隔符,所以我必须根据范围主要在第一个中获取字段。
我的疑问之一是我是否应该在同一个 reader 中阅读两者?在使用相同 reader 的情况下,我应该如何设置 reader FixedLengthTokenizer 和 DefaultLineMapper 来处理这两个文件??
这些是输入文件和控制文件的例子
- 输入文件
09459915032508501149343120020562580292792085100204001530012282921883101
txt 文件最多可包含 50000 行
- 控制文件
00128*
它只有一根线
谢谢!
I must read from two .txt files, one has many lines and the other is a control file that has the number of lines that should be read from the first file
以下是解决您的用例的可能方法:
- 创建一个读取控制文件的第一步(tasklet),并将要读取的行数放在作业执行上下文中(与下一步共享)
- 创建第二个步骤(面向块),步骤范围为 reader,配置为仅读取第一步计算的行数(从作业执行上下文中获取值)
您可以在此处阅读有关在步骤之间共享数据的更多信息:https://docs.spring.io/spring-batch/docs/4.2.x/reference/html/common-patterns.html#passingDataToFutureSteps