Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring批处理/启动将csv转换为多个json并写入Marklogic数据库_Json_Spring_Spring Boot_Spring Batch_Marklogic - Fatal编程技术网

Spring批处理/启动将csv转换为多个json并写入Marklogic数据库

Spring批处理/启动将csv转换为多个json并写入Marklogic数据库,json,spring,spring-boot,spring-batch,marklogic,Json,Spring,Spring Boot,Spring Batch,Marklogic,我有一个需求,即使用reader将文件转换为复合对象,我需要在该对象中获取不同的对象,并将其作为单独的json文件写入。这意味着对于一行csv文件,将创建多个JSON文件,并且需要将这些文件写入Marklogic数据库。 我曾经使用多项目编写器将文件转换为单个输出文件,但现在我需要将每一行拆分为多行,并将其写入marklogic数据库。 任何关于如何将一行拆分为多个文件并写入Marklogic数据库的想法 使用Item reader创建的复合对象示例,以下只是一个示例,而不是实际的问题场景:

我有一个需求,即使用reader将文件转换为复合对象,我需要在该对象中获取不同的对象,并将其作为单独的json文件写入。这意味着对于一行csv文件,将创建多个JSON文件,并且需要将这些文件写入Marklogic数据库。 我曾经使用多项目编写器将文件转换为单个输出文件,但现在我需要将每一行拆分为多行,并将其写入marklogic数据库。 任何关于如何将一行拆分为多个文件并写入Marklogic数据库的想法

使用Item reader创建的复合对象示例,以下只是一个示例,而不是实际的问题场景:

    Person{
        HomeAddress homeadd;
        OfficeAddress officeAdd;
    }
csv的一行表示home add和office add。我需要在输出中向Marklogic数据库写入两个json文件/对象(每种类型的add一个)。
谢谢

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

您还可以使用post-commit触发器,在初始插入之后,将文档处理成所需的片段。如果这是大容量的,那么您可以决定通过Corb2来实现

您可以将CSV预处理为多个适合IMMIDATE摄取的CSV文件


考虑到以上所有选项,您可以使用data movement SDK来编写解决方案:(甚至是MLCP/Hadoop相关库)

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