我有一个非常大的(约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)
哪个小规模工作但在使用整个列表时也给了我“未知错误”(也有较小的定期提交值)。
任何有关我正在做错的指导都将不胜感激。
答案 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)