从CSV到Neo4J的密码导入-如何提高性能
我正在将以下内容导入Neo4J: 类别.csv从CSV到Neo4J的密码导入-如何提高性能,neo4j,cypher,Neo4j,Cypher,我正在将以下内容导入Neo4J: 类别.csv CategoryName1 CategoryName2 CategoryName3 ... 类别与关系.csv category_parent category_child CategoryName3 CategoryName10 CategoryName32 CategoryName41 ... 基本上,categories_relations.csv显示categories.csv中类别之间的父子关系 我使用以下查询导入了
CategoryName1
CategoryName2
CategoryName3
...
类别与关系.csv
category_parent category_child
CategoryName3 CategoryName10
CategoryName32 CategoryName41
...
基本上,categories_relations.csv显示categories.csv中类别之间的父子关系
我使用以下查询导入了第一个csv文件,该查询进行得非常顺利和迅速:
USING PERIODIC COMMIT
LOAD CSV FROM 'file:///categories.csv' as line
CREATE (:Category {name:line[0]})
然后,我导入了第二个csv文件,其中包含:
USING PERIODIC COMMIT
LOAD CSV FROM 'file:///categories_relations.csv' as line
MATCH (a:Category),(b:Category)
WHERE a.name = line[0] AND b.name = line[1]
CREATE (a)-[r:ISPARENTOF]->(b)
我有大约200万个节点
我试着执行第二个查询,它花费了相当长的时间。我可以让查询执行得更快吗
确认您在正确的属性上匹配。在创建时,您只为类别设置了一个属性,即
类别。但您在第二个数据库中匹配的是属性id
查询以创建类别之间的关系
为了更快地执行第二个查询,您可以在与类别节点匹配的属性(此处id
)上添加索引
创建索引:类别(id)
如果仍然需要时间,您可以参考我的答案来加载CSV您正在使用CREATE
来创建关系,因此您需要删除之前创建的所有关系,否则可能会出现内存不足错误,因此请增加neo4j.conf文件中的堆内存