2017-01-31 204 views
0

我想導入包含節點(+200000)和它們之間的邊緣的一個CSV到Neo4J中。從CSV導入到Neo4J的數據

1)出於某種原因,我無法找到,當文件大小超過5000行(或大約),關係根本不會被創建。

USING PERIODIC COMMIT 100 
LOAD CSV WITH HEADERS FROM "file:///export_conceptos_50000.txt" AS csvLine 
FIELDTERMINATOR '\t' 
MERGE (c:Concepto {nom: csvLine.concepto1_sin, cat: csvLine.c1cat}) 
MERGE (d:Concepto {nom: csvLine.concepto2_sin, cat: csvLine.c2cat}) 
FOREACH(ignoreMe IN CASE WHEN csvLine.relacion='Is_a' THEN [1] ELSE [] END |  MERGE (c)-[:Is_a]->(d)) 
FOREACH(ignoreMe IN CASE WHEN csvLine.relacion='Finding_site' THEN [1] ELSE [] END |  MERGE (c)-[:Finding_site]->(d)) 

所以是原來的問題:不創建邊緣。

2)作爲替代,我嘗試將文件拆分爲更小的文件,然後通過neo4j-shell(Neo4J Linux shell實用程序)導入。

這是命令行:

./neo4j-shell -file /usr/share/neo4j/scripts/query.cypher -path /usr/share/neo4j/neo4j-community-3.1.1/data/databases/graph.db 

,這是輸出:

ERROR (-v for expanded information): 
     Error starting org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory, /usr/share/neo4j/neo4j-community-3.1.1/data/databases/graph.db 

我的猜測是由於這樣的事實,已經有一個Neo4j的發動機運轉。

然後,我應該如何在命令行指定目標數據庫?

謝謝!

回答

1
  1. 你可能想要做多遍,否則你可能會得到您的CSV數據

  2. 的渴望加載問題或許有錯在你的條件句,如果你反正多通你也可以將其更改爲一個簡單的WHERE

這樣的:

USING PERIODIC COMMIT 100000 
LOAD CSV WITH HEADERS FROM "file:///export_conceptos_50000.txt" AS csvLine 
FIELDTERMINATOR '\t' 
MERGE (c:Concepto {nom: csvLine.concepto1_sin, cat: csvLine.c1cat}); 

USING PERIODIC COMMIT 100000 
LOAD CSV WITH HEADERS FROM "file:///export_conceptos_50000.txt" AS csvLine 
FIELDTERMINATOR '\t' 
MERGE (d:Concepto {nom: csvLine.concepto2_sin, cat: csvLine.c2cat}); 

USING PERIODIC COMMIT 10000 
LOAD CSV WITH HEADERS FROM "file:///export_conceptos_50000.txt" AS csvLine 
FIELDTERMINATOR '\t' 
WITH csvLine WHERE csvLine.relacion='Is_a' 
MATCH (c:Concepto {nom: csvLine.concepto1_sin, cat: csvLine.c1cat}) 
MATCH (d:Concepto {nom: csvLine.concepto2_sin, cat: csvLine.c2cat}) 
MERGE (c)-[:Is_a]->(d); 


USING PERIODIC COMMIT 10000 
LOAD CSV WITH HEADERS FROM "file:///export_conceptos_50000.txt" AS csvLine 
FIELDTERMINATOR '\t' 
WITH csvLine WHERE csvLine.relacion='Finding_site' 
MATCH (c:Concepto {nom: csvLine.concepto1_sin, cat: csvLine.c1cat}) 
MATCH (d:Concepto {nom: csvLine.concepto2_sin, cat: csvLine.c2cat}) 
MERGE (c)-[:Finding_site]->(d); 
+0

謝謝邁克爾。我接受了你的提示,它已經運行了一段時間。讓我們來看看! – peleitor