Spring 批处理 ItemReader 以处理树结构文件
Spring Batch ItemReader to process Tree structured File
我正在尝试读取固定长度的文本文件并使用 spring 批处理将其寄存器导入数据库,但输入文件的总体布局是嵌套的,类似于(添加表格只是为了简化可视化) :
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
在我实施的其他 spring 批处理项目中,我们使用具有相同布局寄存器的文件,其中的字段引用它们所属的关系。在这种情况下,寄存器的类型由行第一列的 "id" 标识,关系由 "tree" 结构标识。
是否有任何 spring 开箱即用的 ItemReader 可以帮助完成这项任务?我得到的解决方案是构建一个自定义 ItemReader,它读取企业寄存器并继续读取行构建部门和工作人员对象并返回一个包含所有部门和工作人员的企业对象立即写入数据库但我不知道是否当工人和部门的数量太多时会扩展(使用 JPA 写入数据库)。
在此先感谢您的帮助。
你可以读两遍。首先,读取行,添加到数据库。第二步,再次读取,将关系更新到数据库中,将企业和部门的值保存在自定义ItemReader中。
我最终从 spring-batch-samples 项目 here.
中提出了一个与玩具示例非常相似的解决方案
希望这对遇到类似问题的人有所帮助。
我正在尝试读取固定长度的文本文件并使用 spring 批处理将其寄存器导入数据库,但输入文件的总体布局是嵌套的,类似于(添加表格只是为了简化可视化) :
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
在我实施的其他 spring 批处理项目中,我们使用具有相同布局寄存器的文件,其中的字段引用它们所属的关系。在这种情况下,寄存器的类型由行第一列的 "id" 标识,关系由 "tree" 结构标识。 是否有任何 spring 开箱即用的 ItemReader 可以帮助完成这项任务?我得到的解决方案是构建一个自定义 ItemReader,它读取企业寄存器并继续读取行构建部门和工作人员对象并返回一个包含所有部门和工作人员的企业对象立即写入数据库但我不知道是否当工人和部门的数量太多时会扩展(使用 JPA 写入数据库)。
在此先感谢您的帮助。
你可以读两遍。首先,读取行,添加到数据库。第二步,再次读取,将关系更新到数据库中,将企业和部门的值保存在自定义ItemReader中。
我最终从 spring-batch-samples 项目 here.
中提出了一个与玩具示例非常相似的解决方案希望这对遇到类似问题的人有所帮助。