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 阅读(2914) 评论(1) 编辑 收藏 举报