1

我正在尝试使用 Spring Batch 编写概念证明,其中涉及读取固定宽度的文件并将记录插入数据库。我没有零经验可以依靠,并且发现文档对我想要实现的目标有所了解。

我可以毫无问题地阅读标题行和正文行(使用FixedLengthTokenizerand PatternMatchingCompositeLineMapper)。但是,在构建域对象时,我需要做两件不太明显的事情:

  • 存储标头 ID、文件名等的对象还需要文件中的记录总数(而不是写入 DB 的数量 - 这是为了方便手动检查(如果需要))
  • 存储单个记录的对象需要引用文件的标头ID

换句话说,逐项读取、处理和写入是不够的。每行对应的数据依赖于文件中的其他行。

我确信必须有一个干净的基于 Spring 的方法,我只是不确定从哪里开始寻找。

例子:

HDR 12345
ROW 2013-08-01 Lorem ipsum
ROW 2013-08-01 dolor sit amet

我需要构建的三个域对象是:

Header {id: 12345, records: 2}
Record {header_id: 12345, text: Lorem ipsum }
Record {header_id: 12345, text: dolor sit amet }

在生产中,文件会更加复杂且非常大 - 例如,将它们以中间状态写出来并不理想,尽管我想知道解决方案是否可能涉及分两次处理它们,以某种方式构建所需的数据那样?

提前致谢,

4

0 回答 0