Neo4J - 如何2导入CSV文件与它们之间的关系?

时间:2017-10-02 12:11:58

标签: neo4j cypher

我有两个CSV文件:员工和部门。我可以使用以下查询将它们加载到Neo4J

LOAD CSV WITH HEADERS FROM "file:///Path/to/myCSVfile/depart.csv" AS row
CREATE (:Department{departmentID:toInt(row.id),name:row.name, depart_manager:toInt(row.department_manager)});

LOAD CSV WITH HEADERS FROM "file:///Path/to/myCSVfile/Empl.csv" AS row
CREATE (:Employee{employeeID:toInt(row.id),firstName:row.first_name, lastName:row.last_name, email:row.email, 
startDate:row.startdate, birthDay:row.birthdate, function:row.function, departementId:row.depart_id});

现在我想添加它们之间的关系......换句话说,每个员工都应该属于特定的部门(depart_id)。

CSV文件已经导入,我可以显示每个标签的节点。

怎么能达到这个目的?是否可以在使用脚本/查询导入后执行此操作,还是应该使用其他脚本重新导入它们?

1 个答案:

答案 0 :(得分:3)

您可以尝试在第二个LOAD CSV语句的末尾添加所需的关系。

像这样:

LOAD CSV WITH HEADERS FROM "file:///Path/to/myCSVfile/depart.csv" AS depRow
CREATE (:Department{departmentID:toInt(depRow.id),name:depRow.name, depart_manager:toInt(depRow.department_manager)})
WITH *
LOAD CSV WITH HEADERS FROM "file:///Path/to/myCSVfile/Empl.csv" AS empRow
CREATE (employee:Employee{employeeID:toInt(empRow.id),firstName:empRow.first_name, lastName:empRow.last_name, email:empRow.email, 
startDate:empRow.startdate, birthDay:empRow.birthdate, function:empRow.function, departmentId:empRow.depart_id})
WITH employee
// Adding relation between employee and department
MATCH (dep:Department {departmentID : employee.departmentId})
CREATE (employee)-[:BELONGS_TO]->(dep)