如何从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文件中导入相同标签的节点之间的关系?的主要内容,如果未能解决你的问题,请参考以下文章