添加与现有节点的关系

时间:2014-07-09 20:21:16

标签: python neo4j cypher

我有一个非常大的(约2400万行)边缘列表,我试图导入到一个用节点填充的Neo4j图形。 CSV文件有三列:from,to和period(关系属性)。我使用REST API使用以下(Python)代码尝试了这个:

batch_queue.append({"method":"POST","to":'index/node/people?uniqueness=get_or_create','id':1,'body':{'key':'name','value':row[0]}})
batch_queue.append({"method":"POST","to":'index/node/people?uniqueness=get_or_create','id':2,'body':{'key':'name','value':row[1]}})
batch_queue.append({"method":"POST","to":'{1}/relationships','body':{'to':"{2}","type":"FP%s" % row[2]}})

第三行失败,然后也使用Cypher声明:

USING PERIODIC COMMIT
LOAD CSV FROM "file:///file-name.csv" AS line
MATCH (a:Person {name: line[0]}),(b:Person {name:line[1]})
CREATE (a)-[:FOLLOWS {period: line[2]}]->(b)

哪个小规模工作但在使用整个列表时也给了我“未知错误”(也有较小的定期提交值)。

任何有关我正在做错的指导都将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可能需要查看我的批处理导入程序:http://github.com/jexp/batch-import

LOAD CSV外,请参阅我的博文:http://jexp.de/blog/2014/06/load-csv-into-neo4j-quickly-and-successfully/

将neo4j-shell用于LOAD CSV

根据您的可用内存,您可能需要稍微拆分数据。通过在文件上移动窗口(例如,下面一次是1M行)。您是否为:Person(name)创建了索引/约束?

USING PERIODIC COMMIT
LOAD CSV FROM "file:///file-name.csv" AS line
WITH line
SKIP 2000000 LIMIT 1000000
MATCH (a:Person {name: line[0]}),(b:Person {name:line[1]})
CREATE (a)-[:FOLLOWS {period: line[2]}]->(b)