2017-01-22 295 views
0

我知道这个问题已被问了好几次,但没有答案解决了我的问题。我使用下面的查询来导入数据:Neo4j CSV导入太慢

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM 
'file:///C:/Users/Zo5/Documents/Neo4j/check/import/result1.csv' AS line1 
MERGE (p:Person {forename:line1.forename, surname:line1.surname,  nationality:line1.nationality, occupation:line1.occupation, title:line1.title}) 

但进程太慢。 CSV文件大约为700MB。大约需要15分钟才能输入0.01 GB。我已经在一个新的数据库上尝试过相同的查询,并且这个过程要快得多。有谁知道什么可能会导致这个问题?请注意,我有索引forename

+0

您是否尝试指定索引?由于您的导入使用了大量的模式匹配,所以名字,姓氏的索引可能会加速查询。 –

+0

我不认为这是问题,因为相同的查询在新数据库上正常工作,但我会试一试 – Porjaz

回答

1

什么是唯一标识一个人的属性?对MERGE使用THOSE属性,然后对其余属性使用ON CREATE SET。

因为它现在是你的查询,对于每个MERGE,它将比较:人与你所有给定的属性现有的一组:人看他们是否已经存在。通过缩小MERGE中使用的属性,您将比较少,尽管比较仍会发生,并且您的插入会稳步减慢。

如果您知道:您添加的人员尚不存在,请使用CREATE而不是MERGE。

+0

我只在MERGE中放入'forename'和'surname',并使用ON CREATE SET作为其他属性。这样就快了一点,但还是不够快。我必须导入大约5GB的速度,这样会花费大量的时间。 ':Person'中有重复,所以我必须使用MERGE – Porjaz