【发布时间】:2015-12-03 15:39:50
【问题描述】:
您好,我正在尝试从 Neo4j 2.3.1 中的 CSV 文件导入一些数据。我已经导入了一些 :Author 和 :Article 类型的节点。
作者节点由以下属性组成:
- 键 -> 字符串
- principal_name -> 字符串
- 别名 -> 字符串集合
- ........
我还在 principal_name、别名和键上添加了索引。
当我尝试导入 Article 和 Author 类型的节点之间的关系时出现问题。
CSV 具有这种类型的结构:
articleKey,authorName
有一个天真的解决方案,我尝试使用这样的查询来创建关系:
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:///myPath.csv" AS line
MATCH (art:Article{key: line.key1})
MATCH (auth:Author) WHERE line.key2 IN (auth.alias)
CREATE UNIQUE (auth)-[:AUTHOR_OF]->(art);
查询速度非常慢,因为我使用分析器发现第二个 MATCH 真的很慢。创建每个关系需要 10-12 秒,因为我在数据库中有很多作者(大约 1000000)。
所以我正在寻找一种方法来执行这样的查询以获得更快的执行速度(是一个示例来说明我想要获得的结构):
MATCH (auth:Author{principal_name: line.key2})
IF auth null THEN
MATCH (auth:Author) WHERE line.key2 IN (auth.alias)
END
有没有办法用 Cypher 做到这一点?
【问题讨论】: