用一个csv文件将节点和关系加载到neo4j中的csv中

问题描述 投票:1回答:1

抱歉,我是neo4j的新手,并为我想象的事情而苦苦挣扎是一个非常简单的示例。

我想像这样将组织结构图存储为CSV格式

id,name,manager_id
1,allan,2
2,bob,4
3,john,2
4,sam,
5,Jim,2

请注意,鲍勃有3个直接举报,鲍勃向Sam举报,而Sam却没有向任何人举报。

我想制作一张显示管理链的图。我尝试了以下方法,但是它产生的关系与人们之间是脱节的:

LOAD CSV WITH HEADERS FROM "file///employees.csv" AS csvLine
CREATE (p:Person {id: csvLine.id, name: csvLine.name})
CREATE (p)-[:MANAGED_BY {manager: csvLine.manager_id}]->(p)

此查询会创建一堆自引用关系。无论如何,在单个csv上用一个命令填充图形?我必须缺少一些东西,感谢您的帮助。谢谢

neo4j cypher graph-databases
1个回答
0
投票

我认为这就是您想要的。

在您的查询中,头正在pp之间建立关系,因此是自引用关系。

我添加了合并语句来处理没有manager_id值的人。山姆可以通过这种方式向自己报告。

LOAD CSV WITH HEADERS FROM "file:///employees.csv" AS csvLine
// create or match the person in the left column
MERGE (p:Person {id: csvLine.id })

// if they are created then assign their name
ON CREATE SET p.name = csvLine.name

// create or match the person/manager in the right column
MERGE (p1:Person {id: coalesce(csvLine.manager_id, csvLine.id) })

// create the reporting relationship
CREATE (p)-[:MANAGED_BY]->(p1)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.