【问题标题】:Cypher Import from CSV to Neo4J - How To Improve Performance从 CSV 到 Neo4J 的 Cypher 导入 - 如何提高性能
【发布时间】:2019-04-13 16:13:31
【问题描述】:

我正在将以下内容导入 Neo4J:

categories.csv

CategoryName1
CategoryName2
CategoryName3
...

categories_relations.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 万个节点。

我尝试执行第二个查询,它需要很长时间。我可以让查询执行得更快吗?

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    确认您匹配正确的属性。您在创建时只为 Category 节点设置一个属性,即 name 类别。但是您第二次匹配属性 id 查询以创建类别之间的关系。

    为了更快地执行第二个查询,您可以在属性上添加索引(此处为id,您正在匹配类别节点。

    CREATE INDEX ON :Category(id)

    如果还需要时间,你可以参考我的回答 Load CSV here

    【讨论】:

    • 您正在使用CREATE 创建关系,因此您需要删除之前创建的所有关系
    • 你可能会出现内存不足的错误,所以在neo4j.conf文件中增加堆内存
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多