使用一个 csv 文件中的节点和关系在 neo4j 中加载 csv
Load csv in neo4j with nodes and relationships in one csv file
抱歉,我是 neo4j 的新手,并且在我想象的一个非常简单的例子中苦苦挣扎。
我想建模一个组织结构图,我已经像这样将其存储为 csv
id,name,manager_id
1,allan,2
2,bob,4
3,john,2
4,sam,
5,Jim,2
请注意,Bob 有 3 个直接下属,Bob 向 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 的一个命令来填充图形?我一定遗漏了一些东西,我们将不胜感激。谢谢
我想这就是您要找的。
在您的查询中,您正在 p
和 p
之间创建关系,因此是自引用关系。
我添加了一个合并语句来处理没有 manager_id
值的人。这样 Sam 就可以向自己报告。
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)
抱歉,我是 neo4j 的新手,并且在我想象的一个非常简单的例子中苦苦挣扎。
我想建模一个组织结构图,我已经像这样将其存储为 csv
id,name,manager_id
1,allan,2
2,bob,4
3,john,2
4,sam,
5,Jim,2
请注意,Bob 有 3 个直接下属,Bob 向 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 的一个命令来填充图形?我一定遗漏了一些东西,我们将不胜感激。谢谢
我想这就是您要找的。
在您的查询中,您正在 p
和 p
之间创建关系,因此是自引用关系。
我添加了一个合并语句来处理没有 manager_id
值的人。这样 Sam 就可以向自己报告。
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)