2017-01-31 4 views
0

Я пытаюсь импортировать CSV-содержащие узлы (+200000) и края между ними в Neo4J.Импорт данных в Neo4J из CSV

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).

Это командная строка:

./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

Смежные вопросы