从CSV导入数据到Neo4J [英] Importing data into Neo4J from CSV

查看:237
本文介绍了从CSV导入数据到Neo4J的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将包含节点(+200000)和它们之间的边缘的CSV导入Neo4J.

I am trying to import a CSV containing nodes (+200000) and edges between them, into Neo4J.

1)由于某种原因,我无法找出文件大小超过5000行(或大约5000行)的关系.

1) For some reason that I could not find out, when the file size is over 5000 lines (or so), relationships do not get created at all.

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

所以是最初的问题:不会创建边缘.

So this is the original issue: edges are not created.

2)作为替代,我尝试将文件拆分为较小的文件,然后通过neo4j-shell(Neo4J Linux shell实用程序)导入.

2) As an alternative, I tried to split the file into smaller ones, and then import via neo4j-shell (Neo4J Linux shell utility).

这是命令行:

./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引擎在运行.

which I guess is due to the fact that there is already a Neo4J engine running.

然后,如何在命令行中指定目标数据库?

Then, how should I specify the target database at the command line?

谢谢!

推荐答案

  1. 您可能想进行多次通过,否则可能会在急于加载CSV数据时遇到问题

  1. you might want to do multi-pass, as otherwise you might get problems with eager loading of your CSV data

也许您的条件句中有问题,如果您仍然多次通过,也可以将它们更改为简单的WHERE

perhaps there is something wrong in your conditionals, if you do multi-pass anyway you can also change them to a simple 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);

这篇关于从CSV导入数据到Neo4J的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆