使用自动编码将CSV(或TSV)加载到MarkLogic中

时间:2014-04-28 21:02:00

标签: marklogic mlcp nosql

我已经使用MLCP(MarkLogic内容泵)成功地将一个非常干净(简单的英文,没有花哨的符号或图像)CSV文件加载到MarkLogic中,这样它就会将第一行作为列名称,并且我已经了解到当我尝试加载一些不干净的东西(即混合其他语言和编码)时,它就失败了。

我从提取指南(http://docs.marklogic.com/guide/ingestion/encoding?print=yes)中读到,MLCP无法控制编码,所以我决定试试Java API和xdmp Xquery。

使用Java API时我得到了:     第1549行的UTF-8转义序列无效 - 文档不是UTF-8编码

如果我尝试在查询控制台或Information Studio上的流程中使用xdmp in自动编码加载它,它会加载没有问题,但MarkLogic不会将第一行作为列名称,而是接受整个文件作为一份文件,这不是我想要的。

有没有办法加载没有编码问题的CSV文件,并将第一行作为列名?

提前致谢。

1 个答案:

答案 0 :(得分:3)

RecordLoader可以做到:http://marklogic.github.io/recordloader/

CONFIGURATION_CLASSNAME=com.marklogic.recordloader.xcc.DelimitedDataConfiguration
FIELD_DELIMITER=,
RECORD_NAME=my-root-element-name

使用这些属性和CSV文件运行recordloader.sh。 RecordLoader期望第一行是标题列表,并将它们转换为元素名称。调整my-root-element-name以适合自己,并将INPUT_ENCODING设置为您需要的任何编码。

请参阅 https://github.com/marklogic/recordloader/blob/master/src/java/com/marklogic/recordloader/xcc/DelimitedDataConfiguration.java了解更多配置选项。