当前位置: 首页>大数据>正文

Neo4j(三)数据导入及查询

大多数图数据库都可以导入csv格式的数据,Node数据和Relation数据分开。

现有演员(person.csv),电影(movie.csv),演员和电影关系person_to_movie.csv文件(忽略数据真实性QAQ)csv文件中的值若有‘或者"则需要用三个单引号将整个值括起来:

Person.csv

"pid","birth","death","name"

"643","1965-12-31",,"巩俐"

"695","1937-03-16","1999-04-14","乔宏"

"1336","1963-04-26",,"李连杰"

"1337","1962-06-27",,"梁朝伟"

########################################################

Movie.csv

"mid","title"

"13","Forrest Gump"

"12780","少年黄飞鸿之铁马骝"

"14310","无间道III: 终极无间"

"15384","赤壁"

#########################################################

person_to_movie.csv

"pid","mid"

643,12780

695,13

1336,14310

1337,15384

695,15384

导入数据(需要早命令行中使用):

LOAD CSV WITH HEADERS FROM 'file:///person.csv' AS line MERGE (p:Person { pid:toInteger(line.pid),birth:line.birth,death:line.death,name:line.name})

LOAD CSV WITH HEADERS FROM "file:///movie.csv" AS line

MERGE (p:Movie{mid:toInteger(line.mid),title:line.title})

LOAD CSV WITH HEADERS FROM "file:///person_to_movie.csv" AS line

match (from:Person{pid:toInteger(line.pid)}),(to:Movie{mid:toInteger(line.mid)})?

merge (from)-[r:actedin{pid:toInteger(line.pid),mid:toInteger(line.mid)}]->(to)

查询(可以在客户端中查询):

查询全部图(节点太多的话不能显示全部节点):match (n) return n

查询出演同一部电影的演员:

match (p1:Person)-[:actedin]->(m:Movie{mid:"15384"})<-[:actedin]-(p2:Person) return m.title

单独创建节点:

create(p:Person {birth:"2000-09-12",death:"",name:"王俊凯"})

创建关系:

create (a:Person{name:"王俊凯"})-[:二级2产品]->(b:Movie{mid:"14310"})

删除全部节点和关系

match(n) detach delete n? ??

创建唯一约束:

create constraint on (p:Person) assert(p.name) is unique

建索引:

create index on :Person(name)

删除索引:

DROP INDEX ON :Person(name)

删除唯一约束:

drop constraint on (p:Person) assert(p.name) is unique

展示索引:

CALL db.indexes

复合索引在查询的时候要带上所有索引列查询,否则不起作用,而且只对n.property = x 或者 n.property in list这种语法有效,其他不有效


https://www.xamrdz.com/bigdata/7f81993857.html

相关文章: