繁体   English   中英

Spring Batch ItemReader处理树结构文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM