【问题标题】:Spring Batch/Boot converting csv to multiple json and write to Marklogic databaseSpring Batch/Boot 将 csv 转换为多个 json 并写入 Marklogic 数据库
【发布时间】:2017-08-30 17:14:55
【问题描述】:

我需要使用阅读器将文件转换为复合对象,我需要在该对象中获取不同的对象并将其写入单独的 json 文件。这意味着对于单行 csv 文件,将创建多个 jsons 文件,这些文件需要写入 Marklogic 数据库。 我已经使用多个项目编写器将文件转换为单个输出文件,但现在我需要将每一行拆分为多行并将相同的内容写入 marklogic 数据库。 知道如何将单行拆分为多个文件并写入 Marklogic 数据库。

从Item reader创建的复合对象的例子,下面只是一个例子而不是实际的问题场景:

    Person{
        HomeAddress homeadd;
        OfficeAddress officeAdd;
    }

一行 csv 代表 home add 和 office add。我需要输出两个写入 Marklogic 数据库的 json 文件/对象(每种添加类型一个)。 谢谢

【问题讨论】:

    标签: json spring spring-boot spring-batch marklogic


    【解决方案1】:

    如果您使用 MLCP 将 CSV 处理为每行 CSV 一条记录,那么您还可以在输入上定义一个转换规则并劫持该过程以解析/插入其他文档。

    您还可以使用提交后触发器,在初始插入后,将文档处理成所需的部分。如果这是大容量,那么您可以决定通过 Corb2 来执行此操作。

    您可以将 CSV 预处理为多个适合即时摄取的 csv 文件。

    考虑到上述所有选项,您可以使用数据移动 SDK 来编写您的解决方案:https://developer.marklogic.com/learn/data-movement-sdk(甚至是 MLCP/Hadoop 相关库)

    【讨论】:

    • 谢谢大卫。为此,我正在使用 ItemReader 和 ItemProcessor 和 ItemWriter 的自定义实现。我已将对象拆分为多个对象并在 writer 中创建了文件。现在正在研究如何在不将文件写入磁盘的情况下写回 Marklogic 数据库。
    • 如果您正在从文件中读取数据,我认为 David 的第一个建议是使用 MLCP 转换将行拆分为两个文档是最简单的方法。当您的数据在文件中时,MLCP 表现良好;当必须从不同的来源检索数据时,我通常会引入 Spring Batch。
    • 实际上数据必须在写入 Marklogic 之前进行转换,这是通过处理器用于处理数据,并且通过使用 writer,我试图通过填充流而不是文件来避免磁盘写入作为输出,然后将它们插入到marklogic中。
    • MLCP 有一个在输入过程中转换数据的选项。为什么必须在外部进行转换?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多