2017-01-22 299 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