neo4j通过LOAD CSV导入结点和关系
1.neo4j默认的导入入口是:安装路径/import,所以要将csv文件放在import目录下,像下面这样:

2.导入后中文乱码:
因为neo4j是utf-8的,而CSV默认保存是ANSI的,需要用记事本另存为成UTF-8的。

"另存为"编码选择UTF-8.

3.删除结点
MATCH(n:PGenre) DETACH DELETE n
4.导入结点
4.1 创建“乒乓”结点。
LOAD CSV WITH HEADERS FROM "file:///pingpong.csv" AS line
MERGE (p:Pingpong{pinp:toInteger(line.pinp),attribute:line.attribute})
4.2导入语料种类pgenre.csv文件创建PGenre结点,PGenre结点代表将乒乓球语料分为发球方式,握拍方式,球拍类型,主要战术等8个类别。LOAD语句中的参数:
p:结点名称 gid/genre:结点的属性 line.gid/line.genre:csv文件的首行
pgenre.csv存入默认导入路径时可以使用“file:///pgenre.csv”文件指代。

LOAD CSV WITH HEADERS FROM "file:///pgenre.csv" AS line
MERGE(p:PGenre{gid:toInteger(line.gid),genre:line.genre})
导入后如下:
4.3 导入具体动作paction.csv创建PAction结点,PAction结点为以上除人物介绍的七种类别的具体动作分类。
LOAD CSV WITH HEADERS FROM "file:///paction.csv" AS line
MERGE (p:PAction{aid:toInteger(line.aid),action:line.action})
4.4 导入人物介绍pperson.csv文件创建PPerson结点,主要包含乒乓球人物的信息,擅长动作,参加过的比赛及获得过的荣誉。
LOAD CSV WITH HEADERS FROM "file:///pperson.csv" AS line
MERGE (p:PPerson{pid:toInteger(line.pid),name:line.name,
bir_day:line.bir_day,bir_place:line.bir_place,
grip_mode:line.grip_mode,skills:line.skills,awards:line.awards,
events:line.events})
导入后如下:
4.5 导入具体动作问答qa.csv文件,创建具体问题PQa结点。
LOAD CSV WITH HEADERS FROM "file:///pqa.csv" AS line
CREATE (p:PQa{qid:toInteger(line.qid),question:line.question,answer:line.answer})
注:使用CREATE与MERGE的区别在于,CREATE允许值重复,而MERGE不允许,有重复值使用MERGE会报Neo.ClientError.Statement.SemanticError的错误。
5.导入结点之间的关系
5.1 Pingpong结点与PGenre结点之间的关系定义为clude。
LOAD CSV WITH HEADERS FROM "file:///pingpong_genre.csv" AS line
match (from:Pingpong{pinp:toInteger(line.pinp)}),(to:PGenre{gid:toInteger(line.gid)})
merge (from)-[r:clude{pinp:toInteger(line.pinp),gid:toInteger(line.gid)}]->(to)
5.2 PGenre结点和PAction结点之间的关系定义为have。(种类和具体动作分类之间的关系)

load语句为:
LOAD CSV WITH HEADERS FROM "file:///pgenre_action.csv" AS line
match (from:PGenre{gid:toInteger(line.gid)}),(to:PAction{aid:toInteger(line.aid)})
merge (from)-[r:have{gid:toInteger(line.gid),aid:toInteger(line.aid)}]->(to)
5.3 PGenre结点和PPerson结点之间的关系定义为hav。
load语句为:
LOAD CSV WITH HEADERS FROM "file:///person_genre.csv" AS line
match (from:PGenre{gid:toInteger(line.gid)}),(to:PPerson{pid:toInteger(line.pid)})
merge (from)-[r:hav{gid:toInteger(line.gid),pid:toInteger(line.gid)}]->(to)
导入效果为:
5.4 PAction结点和PQa结点之间的关系定义为haven。
LOAD CSV WITH HEADERS FROM "file:///pqaid_action.csv" AS line
match (from:PAction{aid:toInteger(line.aid)}),(to:PQa{qid:toInteger(line.qid)})
merge (from)-[r:haven{aid:toInteger(line.aid),qid:toInteger(line.qid)}]->(to)
完成上述的导入之后,可以看到如下的效果:
①.展示属性内容,双击邓亚萍,界面下侧会显示人物的 属性特点。

②显示结点与结点之间的关系。
6.目录文件名

pingpong.csv --> 创建乒乓结点Pingpong,只有属性“乒乓”。 pgenre.csv --> 创建八种分类结点PGenre,包括人物介绍和动作分类。 pingpong_genre.csv --> Pingpong结点和PGenre结点之间的关系(clude)。 paction.csv --> 创建七种动作分类的具体动作分类结点PAction。 pgenre_action.csv --> 创建PGenre结点与PAction结点之间的关系(have)。 pqa.csv --> 每个PAction结点下的具体问题结点PQa。 pqaid_action.csv --> PAction结点和PQa结点之间的关系(haven)。 person.csv --> 人物结点PPerson。 pperson_genre.csv --> PPerson和PGenre之间的关系(has)。
浙公网安备 33010602011771号