1、我有两个节点,分别是Person和 Moive,有 Person-[:ACTED_IN]->Moive (ACTED_IN是参演关系,表示某个人参演了某个电影),Person-[:DIRECTED]->Moive (DIRECTED表示是执导关系,表示某个人执导了某部电影),Person-[:REVIEWED]->Moive (REVIEWED是编剧关系,表示某个人是某部电影的编剧),Person-[:FOLLOWS]->Person(FOLLOWS是关注关系,表示某个人关注了另一个人)
2、首先导入Node节点的csv文件,首先 csv文件必须要放在 neo4j安装目录的import文件夹下
bash
LOAD CSV WITH HEADERS FROM 'file:///person.csv' AS row
CREATE (n:Person {personId:row.personId ,name: row.name, born: toInteger(row.born)})
LOAD CSV WITH HEADERS FROM 'file:///movie.csv' AS row
CREATE (n:Movie {movieId:row.movieId,title: row.title, votes: toInteger(row.votes),tagline:row.tagline,released:toInteger(row.released)})
我本地的数据路径如下
3、导入关系文件
bash
//参演
LOAD CSV WITH HEADERS FROM 'file:///r_ACTED_IN_person_2_moive.csv' AS row
MATCH (p:Person {name: row.`:START_ID`})
MATCH (m:Movie {tagline: row.`:END_ID`})
MERGE (p)-[r:ACTED_IN]->(m)
SET r.roles = row.roles
//指导
LOAD CSV WITH HEADERS FROM 'file:///r_DIRECTED_person_2_moive.csv' AS row
MATCH (p:Person {name: row.`:START_ID`})
MATCH (m:Movie {tagline: row.`:END_ID`})
MERGE (p)-[r:DIRECTED]->(m)
//REVIEWED 编剧
LOAD CSV WITH HEADERS FROM 'file:///r_REVIEWED_person_2_movie.csv' AS row
MATCH (p:Person {name: row.`:START_ID`})
MATCH (m:Movie {tagline: row.`:END_ID`})
MERGE (p)-[r:REVIEWED]->(m)
SET r.summary = row.summary ,r.rating = row.rating
//关注
LOAD CSV WITH HEADERS FROM 'file:///r_FOLLOWS_person_2_person.csv' AS row
MATCH (p:Person {name: row.`:START_ID`})
MATCH (m:Person {name: row.`:END_ID`})
MERGE (p)-[r:FOLLOWS]->(m)
3、导入完成后,可以看到如下
4、如果想导出可以直接执行的csv文件,首先要先写match语句,如下(适合数据量不大的情况)
bash
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
RETURN
p.name AS `:START_ID`,
'ACTED_IN' AS `:TYPE`,
m.tagline AS `:END_ID`,
r.roles AS roles
MATCH (p:Person)-[r:DIRECTED]->(m:Movie)
RETURN
p.name AS `:START_ID`,
'DIRECTED' AS `:TYPE`,
m.tagline AS `:END_ID`
MATCH (p:Person)-[r:REVIEWED]->(m:Movie)
RETURN
p.name AS `:START_ID`,
'REVIEWED' AS `:TYPE`,
m.tagline AS `:END_ID`,
r.summary as summary,
r.rating as rating
MATCH (p:Person)-[r:FOLLOWS]->(m:Person)
RETURN
p.name AS `:START_ID`,
'FOLLOWS' AS `:TYPE`,
m.name AS `:END_ID`