如何从neo4j中的csv文件中导入相同标签的节点之间的关系?

Posted

技术标签:

【中文标题】如何从neo4j中的csv文件中导入相同标签的节点之间的关系?【英文标题】:How to import relationships between nodes of the same label from a csv file in neo4j? 【发布时间】:2015-10-05 00:22:58 【问题描述】:

我有两个单独的 csv 文件需要导入到我的 neo4j 数据库中。第一个文件包含我希望导入的所有节点。信息分类如下:

                             id, Name 

                              1, Earth science

要导入它,我成功使用了以下代码:

从 'file:///Node_test.csv' AS 行加载带有标题的 CSV

CREATE (:Discipline id: toInt(line.id), name: line.Name)

现在,我想导入我的关系文件并创建我刚刚导入的节点之间的所有关系。 relationship.csv 文件中的信息分类如下:

                 RelationshipID, parentID, relationship_type, childID

                              1, 2, IS_A_PARENT_DISCIPLINE_OF, 5

要导入它,我使用了以下代码,但没有成功:

使用定期提交 500 从“file:///relationship_test.csv”作为 csvLine 加载带有标题的 CSV

MATCH (DParent:Discipline id: toInt(csvLine.parentID)),(DChild:Discipline id: toInt(csvLine.childID))

CREATE (DParent)-[:IS_A_PARENT_DISCIPLINE_OF id:toInt(csvLine.RelationshipID) ]->(DChild)

注意:结果没有显示任何错误,它只是没有返回任何更改,没有行。

有关我找到的有关该主题的其他文档,请参阅下面的链接;我还没有找到任何描述如何导入 csv 文件以在同一标签的节点之间创建关系的文档。

http://neo4j.com/docs/2.3.0-M01/cypherdoc-importing-csv-files-with-cypher.html

How do i create relationships for existing nodes by importing csv file in neo4j?

Spring Data Neo4j 4.0.0: Can't Create Relationship Between Nodes with the Same Label

【问题讨论】:

您的第一个文件是否实际上包含 id 值 2 和 5 的行? 是的。而且我很确定第一个文件中没有缺少 id,因为我会收到一条错误消息。不是吗? 找不到匹配项不被视为错误。 好的,我会进行第二次检查。谢谢! 关系文件已经过验证。这不是问题。还有其他想法吗? 【参考方案1】:

以下是需要在neo4j-shell中创建并运行以导入数据的import.cypher文件的内容...

重要的是在匹配和尝试创建关系时,您需要使用 MERGE 命令

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:data/node.csv" AS row
CREATE (:DisciplinedisciplineId: toInt(row.id), name: row.Name);

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:data/rels.csv" AS row
MATCH (parent:DisciplinedisciplineId: toInt(row.parentID))
MATCH (child:Discipline disciplineId: toInt(row.childID))
MERGE (parent)-[:IS_PARENT_DISCIPLINE_OF]->(child);

【讨论】:

以上是关于如何从neo4j中的csv文件中导入相同标签的节点之间的关系?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 中导入 CSV 文件?

从文件夹中导入 Python 3 中的 .csv 文件

在将节点从 csv 创建到 neo4j 时创建关系

Neo4j - 将节点标题设置为 Web 界面中的标签

在 Weka 中导入 csv 时值的数量错误

如何在 R 中导入文件名中包含特定单词的 .csv 文件?