我正在探索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"
}
甚至插入空白/空值。有没有办法指定在插入ML时忽略空白/ null的字段? 这就是我所期待的。
{
"firstname" : "Rajath4",
"address1" : "No 36B",
"city" : "Coorg",
"state" : "KA",
"country" : "IN"
}
还有如何为我们插入的每个文档维护一个自动生成的primary_key /序列?如果id已存在,则应合并/更新文档。
提前致谢。
答案 0 :(得分:3)
您可以使用自定义转换来使用您自己的代码过滤数据。
此外,MLCP能够执行唯一ID - 但是每次运行,而不是全局。但幸运的是,自定义转换功能允许您根据需要更改URI(因此您提供了使其独一无二的逻辑) - 解决了您的两个挑战。
DOC: https://docs.marklogic.com/guide/mlcp.pdf
相关章节:
- 4.17 - 自定义转换
- 4.17.5 - Sample Transform(这里添加你的代码来过滤内容。在你的情况下,你可能更喜欢在javascript中调用一个函数。但这都是个人选择。)
- 4.17.6 - 更改URI
有趣注意4.17.6还包括解释如何更改文档类型。如果你是一个xslt人,你可能决定让MLCP提供XML,然后是一个模板来清除空元素,然后转换并保存到最后的json对象。
注意事项:如果你使用带有fastload选项的MLCP,那么我认为更改URI会否定fastload(或类似的东西)的好处
答案 1 :(得分:3)
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,并使用Java或{{插入生成的JSON或XML文档3}}客户端API。