[英]Spring Batch ItemReader to process Tree structured File
我正在尝试读取固定长度的文本文件,并使用spring batch将其寄存器导入数据库,但是输入文件的一般布局是嵌套的,类似于(添加表格只是为了简化可视化):
FILE HEADER
ENTERPISE1 HEADER
DEPARTMENT1 HEADER
WORKER1
WORKER2
DEPARTMENT1 FOOTER
DEPARTMENT2 HEADER
WORKER3
DEPARTMENT2 FOOTER
ENTERPRISE1 FOOTER
ENTERPRISE2 HEADER
DEPARTMENT3 HEADER
WORKER4
DEPARTMENT3 FOOTER
ENTERPRISE2 FOOTER
.
.
.
FILE FOOTER
该文件必须与类似表和关系的数据库一起导入。
TABLE RELATION TABLE
ENTERPRISE (ONETOMANY) DEPARTMENTS
DEPARTMENT (ONETOMANY) WORKERS
在我实施的其他春季批处理项目中,我们使用了具有相同布局批注文件的文件,这些文件的字段引用了它们所属的关系。 在这种情况下,寄存器的类型由该行第一列上的“ id”标识,关系由“ tree”结构标识。 有没有可用的春季即用ItemReader可以帮助完成此任务? 我得到的解决方案是建立一个自定义的ItemReader,它读取企业注册并继续读取建立部门和工作人员对象的行,并返回带有所有部门和工作人员的Enterprise对象,以便立即将其写入数据库,但是我不知道是否当工人和部门的数量过多(使用JPA写入数据库)时,它将扩展。
在此先感谢您的帮助。
您可以阅读两次。 首先,阅读各行,添加到数据库中。 在第二步中,再次阅读,将关系更新到数据库中,将企业和部门中的值保存在自定义ItemReader中。
我最终在这里的 spring-batch-samples项目的叉子上提出了一个与玩具示例非常相似的解决方案。
希望这对遇到类似问题的人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.