我尝试加载数据。它不起作用。
我的尝试:
多个分隔符,所有带引号的字段,所有字段都没有,从数据中删除标题,mlcp中没有分隔符选项,mlcp中的其他分隔符选项,其他计算机,其他ML8版本,其他Java版本,更少数据,更多数据,带和没有变换。
我的shell脚本:
#!/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
答案 0 :(得分:2)
查看此博客Ingesting Delimited Text with MLCP,它解释了此类问题的原因以及应采取的措施。 简而言之,您会看到此错误主要是因为您有这样的数据:
"first"name;lastName;middle
此处的第一列是无效的CSV列,因为除非您将其转义,否则您不能在该字段中包含引号。有关详细信息,请参阅帖子。
虽然在数据样本中你提出了问题,但似乎没问题。但仍请确保在原始数据中,您不会在未转义的字段中间留下任何双引号。顺便问一下,你使用的mlcp版本是什么?
答案 1 :(得分:2)
使用非标准分隔符时,我发现使用options file通常效果更好。
options.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