【问题标题】:Loading CSV (or TSV) into MarkLogic with automatic encoding使用自动编码将 CSV(或 TSV)加载到 MarkLogic
【发布时间】:2014-04-28 21:01:59
【问题描述】:

我已经使用 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 编码

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

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

提前致谢。

【问题讨论】:

  • 您是否尝试过先在编辑器中打开文件,然后强制将其另存为 UTF-8?

标签: marklogic mlcp nosql


【解决方案1】:

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 了解更多配置选项。

【讨论】:

  • SEVERE: com.marklogic.recordloader.FatalException: com.marklogic.recordloader.LoaderException: document mismatch: fields=2, labels=19 at stdin:2: 我该如何解决这个问题?我应该使用 Java API 还是 shell 脚本?
  • 通过 StackOverflow 提供支持听起来是个坏主意:请使用 github.com/marklogic/recordloader/issues/new,您有足够的空间告诉我所有血淋淋的细节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
  • 2014-07-08
  • 2015-01-15
  • 1970-01-01
  • 2014-05-24
相关资源
最近更新 更多