当我将csv文件发送到marklogic时,它不会覆盖前一个?

时间:2017-12-12 17:57:40

标签: csv marklogic mlcp

我将以下csv文件发送到marklogic

id,first_name,last_name,email,country,ip_address
5,Shawn,Grant,sgrant0@51.la,Liberia,37.194.161.124
5,Joshua,Fields,jfields1@godaddy.com,Colombia,54.224.238.176
5,Johnny,Bell,jbell2@t.co,Finland,159.38.61.122

通过mlcp使用以下命令

C:\mlcp-9.0.3\bin>mlcp.bat import -host localhost -port 9636 -username admin -pa
ssword admin -input_file_path D:\test.csv -input_file_type delimited_text -docum
ent_type json

What happened ?

当我看到查询控制台时,我有一个带有以下信息的JSON文档

 id,first_name,last_name,email,country,ip_address
 5,Shawn,Grant,sgrant0@51.la,Liberia,37.194.161.124

What i am expecting ?

默认情况下,通过创建json / xml文档来获取csv的第一列。由于我发送3行,它应该有最新的信息(即第3行)。

By Assumption

由于我在mlcp中一次发送所有三行,我们不能说哪一行首先发送到ML DB

让我知道我的假设是对还是错。

由于

1 个答案:

答案 0 :(得分:2)

MLCP希望尽可能快。对于CSV文件,它将使用许多线程处理行(如果传递split选项,甚至会对文档进行分片)。有了这个,不能保证它将以任何特定的顺序处理。您可以调整MLCP中的某些设置以使用一个线程而不是对文件进行分片以影响您想要的结果,但在这种情况下,您将失去MLCP的一些功能。

其次,观察:您正在添加相当多的插入和覆盖不需要的文档的开销来解释您的问题陈述。为什么不将您的初始CSV文档排序并过滤为每个ID只有一个记录,并使您的计算机免于做更多的工作。