我正在尝试使用Spring Batch编写概念证明,其中包括读取固定宽度文件并将记录插入数据库。我没有经验可以依靠,我发现文档对我想要实现的目标有点了解。
我可以阅读标题行和正文行没问题(使用FixedLengthTokenizer
和PatternMatchingCompositeLineMapper
)。但是,在构建域对象时,我需要做两件不太明显的事情:
换句话说,逐项阅读,处理和写作是不够的。每行对应的数据取决于文件中的其他行。
我确信必须有一个干净的基于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 }
在生产中,文件会更加复杂和非常大 - 例如,将它们写在中间状态是不理想的,尽管我想知道解决方案是否可能涉及在两次通过中处理它们,不知何故构建这样所需的数据?
提前致谢,