2

我尝试加载数据。它不工作。

我尝试过:
多个分隔符,所有带引号的字段,所有字段不带,将标题从数据中删除,mlcp 中没有分隔符选项,mlcp 中的其他分隔符选项,其他计算机,其他 ML8 版本,其他 Java 版本,更少的数据,更多数据,有和没有转换。

我的外壳脚本:

#!/bin/bash

# Data laden met transform
#############################################
mlcp.sh import \
 -host localhost \
 -port 37041 \
 -username admin \
 -password admin \
 -input_file_path sampledata/DIKW \
 -input_file_type delimited_text \
 -delimiter ";" \
 -transform_module /ext/obi/transform/dikw-transform-eval.xqy \
 -transform_namespace "http://marklogic.com/dikw" \
 -mode local \
 -thread_count 1 \
 -transaction_size 1 \
 -batch_size 1

数据

"INCIDENTID";"DATUM";"TIJD";"HECTOMETERAANDUIDING";"WEGNAAM";"KORTBESCHRIJVING"
161236;02-08-14 00:00;1839-11-23 17:05:20;13.3;A14;"a- 1pa" 

错误

15/10/29 11:15:23 ERROR contentpump.DelimitedTextReader: (line 0) invalid char between encapsulated token end delimiter
4

2 回答 2

2

使用非标准分隔符时,我发现使用选项文件通常效果更好。

选项.txt:

import
-host
localhost
-port
37041
-username
admin
-password
admin
-input_file_path
sampledata/DIKW
-input_file_type
delimited_text
-delimiter
;
-transform_module
/ext/obi/transform/dikw-transform-eval.xqy
-transform_namespace
http://marklogic.com/dikw
-mode
local
-thread_count
1
-transaction_size
1
-batch_size
1

请注意,这允许您跳过分号周围的引号。然后:

mlcp.sh -options_file options.txt
于 2015-10-29T17:22:56.540 回答
2

查看此博客Ingesting Delimited Text with MLCP,它解释了此类问题的原因以及如何处理。简而言之,你看到这个错误主要是因为你有一些这样的数据:

"first"name;lastName;middle

此处的第一列是无效的 CSV 列,因为字段内不能有引号,除非您对其进行转义。有关详细信息,请参阅帖子。

尽管在您提出的数据样本中,它似乎还可以。但仍然请确保在原始数据中,不要在字段中间留下任何未转义的双引号。顺便问一下,您使用的 mlcp 版本是什么?

于 2015-10-29T16:08:30.877 回答