我们可以在需要跳过第一行和最后一行的文件上使用 Spring 批处理 Item Reader 和 Writer 吗?

问题描述

在进行一些验证后,我有一个文件要写入数据库。该文件将包含 Header 和 Trailer,需要验证然后跳过,如果满足验证,则应将其间的所有行映射并加载到数据库中。我可以使用 Item Reader 和 Writer 来做到这一点吗?下面是一个示例文件数据,它有一个标题行、一个结尾行,在它们之间是带有要加载到 db 的实际数据的行。任何帮助表示赞赏。

HEADER|xxxxx|20190405T143025Z linedata|linedata|linedata|linedata|||linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|linedata|线数据|线数据

拖车|20190405T143025Z|1

ps:我是一名 IIB 开发人员,这是我第一次使用 Spring Batch。

解决方法

您可以将需求分解为两个步骤:

  • 第 1 步:一个简单的 tasklet,它执行验证逻辑(查找头/尾记录并验证它们)。这一步的成功是下一步的前提。
  • 第 2 步:一个面向块的 tasklet,只有在第 1 步成功时才会触发,并使用 FlatFileItemReader.setLinesToSkip(1) 跳过标头,并使用过滤以 TRAILER 开头的记录的处理器跳过尾标。