使用 MLCP 插入 MarkLogic DB 时检查 null/blank

Check for null/blank while inserting into MarkLogic DB using MLCP

我正在探索 MarkLogic 数据库,并一直在尝试使用 MarkLogic 内容泵将数据导入其中。这是 csv 文件的要点。

firstname, middlename, lastname, address1, address2, city, state, zip, country
Rajath,,A,No 20 GN,16th cross,Bangalore,KA,560029,IN
Rajath1,,,No 75,,Dharwad,KA,560057,IN
Rajath2,,B,No 66,,Haveri,KA,560034,IN
Rajath3,,D,No 24A ,25th cross,Raichur,KA,560095,IN
Rajath4,,,No 36B,,Coorg,KA,,IN

我成功地将它插入到数据库中。这是插入的文档。

{
    "firstname" : "Rajath4",
    "middlename" : "",
    "lastname" : "",
    "address1" : "No 36B",
    "address2" : "",
    "city" : "Coorg",
    "state" : "KA",
    "zip" : "",
    "country" : "IN"
}

它甚至插入了 blank/null 的值。有没有一种方法可以指定在插入 ML 时忽略 blank/null 的字段? 这就是我所期待的。

{
    "firstname" : "Rajath4",
    "address1" : "No 36B",
    "city" : "Coorg",
    "state" : "KA",
    "country" : "IN"
}

以及如何为我们插入的每个文档维护自动生成的 primary_key/sequence?如果 id 已经存在,它应该 merge/update 文档。

提前致谢。

您可以使用自定义转换通过您自己的代码过滤数据。

MLCP 也有能力做一个唯一的 ID - 但根据 运行,不是全局的。但幸运的是,自定义转换功能还允许您根据需要更改 URI(因此您提供了使其独一无二的逻辑)——解决了您的两个挑战。

DOC: https://docs.marklogic.com/guide/mlcp.pdf

相关章节:
- 4.17 - 自定义转换
- 4.17.5 - 示例转换(此处添加您的代码以过滤内容。在您的情况下,您可能更喜欢调用 javascript 中的函数。但仅此而已个人选择。)
- 4.17.6 - 更改 URI

Fun note 4.17.6 还包括解释如何更改文档类型。如果你是一个xslt的人,你可能会决定让MLCP提供XML,然后一个模板来清除空元素,最后转换并保存到一个json对象。


注意事项:如果您将 MLCP 与 fastload 选项一起使用,那么我认为更改 URI 将抵消 fastload(或类似的东西)的好处

CSV 不够具体,无法区分 null、空字符串和未定义。

例如,执行以下 CSV

amount,type,category
1,,C

映射到

{ "amount": 1, "type": null, "category": "C" }

{ "amount": 1, "type": "", "category": "C" }

{ "amount": 1, "category": "C" }

?

如果您想更好地控制 CSV 的解析方式,另一种选择是在 Java 或 Node.js 中预处理 CSV,然后插入生成的 JSON 或XML 使用 Java or Node.js 客户端 API 的文档。