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)。

 

posted on 2019-02-27 20:37  BlueTree2  阅读(2339)  评论(1编辑  收藏  举报

导航