2

我已经使用 MLCP(MarkLogic Content Pump)成功地将一个非常干净(简单的英语,没有花哨的符号或图像)的 CSV 文件加载到 MarkLogic 中,以便它将第一行作为列名,当我尝试加载它不干净的东西(即与其他语言和编码混合)它会失败。

我从摄取指南 ( http://docs.marklogic.com/guide/ingestion/encoding?print=yes ) 中了解到,MLCP 无法控制编码,因此我决定尝试使用 Java API 和 xdmp Xquery。

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

如果我尝试在 Query Console 或 Information Studio 的流中使用 xdmp 自动编码加载它,它会毫无问题地加载,但 MarkLogic 不会将第一行作为列名,而是将整个文件作为一个文档,这不是我要找的。

有没有办法在没有编码问题的情况下加载 CSV 文件并将其作为列名放在第一行?

提前致谢。

4

1 回答 1

3

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

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

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

有关更多配置选项,请参阅 https://github.com/marklogic/recordloader/blob/master/src/java/com/marklogic/recordloader/xcc/DelimitedDataConfiguration.java

于 2014-04-29T03:32:29.503 回答