1

我有一个带有分隔符的分隔文本文件~|^。我需要使用 MLCP 将此文件摄取到 marklogic 中。为此,我尝试使用 2 种方式摄取 MLCP。

  1. 使用没有选项文件的 MLCP

    mlcp.sh import -username admin -password admin -input_file_type delimited_text -delimiter "~|^" -document_type json -host localhost -database test -port 8052 -output_uri_prefix /test/data/ -generate_uri -output_uri_suffix .json \-output_collections "Test" -input_file_path inputfile1.csv

  2. 将 MLCP 与选项文件一起使用

    mlcp.sh import -username admin -password admin -options_file delim.opt -document_type json -host localhost -database test -port 8052 -output_uri_prefix /test/data/ -generate_uri -output_uri_suffix .json \-output_collections "Test" -input_file_path inputfile1.csv

我的选项文件如下所示(delim.opt):

-input_file_type
delimited_text
-delimiter
"~|^"

但在这两种方式中,mlcp 都不起作用,我收到以下错误:

java.lang.IllegalArgumentException:无效的分隔符:~|^

谁能帮助我如何通过 MLCP 将这些类型的 CSV 文件摄取到 MarkLogic 中?

4

1 回答 1

2

我相信 MarkLogic 内容泵不能支持解析多字符分隔符。MarkLogic 内容泵使用Apache Commons CSV 库来解析分隔文本。截至今天,在解析多字符分隔符的分隔文本方面似乎存在一个未解决的问题,请参阅问题CSV-206

现在,您可以使用单字符分隔符创建新的分隔文本文件。我经常sed在命令行中使用来替换文件中的字符串。如果您走这条路线,请注意您需要转义记录值中出现的任何新分隔符。

于 2018-08-09T12:51:12.330 回答