该导入方式可以持续追加导入。不需要清空库,也不需要暂停服务。
导入的数据具体包含节点(node)即实体类、关系(relation)即实体类之间的关系:
- 节点包含其属性,例如书的属性有名称、价格;
- 关系即两个节点之间的关系,此处有指向性区别,例如节点(书)与节点(出版社),书出版于出版社,即是两者的关系。
导入的时候,可以在已运行的neo4j所给的浏览器中,直接输入命令。不同类的节点、关系是分开进行导入的。例如book.csv(书)、cbs.csv(出版社)、relation.csv(关系)。导入的csv文件均可放在neo4j目录下的import文件夹下,如果没有,就创建一个(不是必须的,可以自行决定,只要导入能找到即可)。
book.csv(如下表):
bid:书本属性——自定义的书本id,方便查询和导入关联关系使用(导入后,bid相当于其节点属性,导入的节点还会自动生成不重复的唯一id)
name:书本属性——名称
price:书本属性——价格
bid | name | price |
---|---|---|
1 | 西游记 | 20 |
2 | 红楼梦 | 30 |
3 | 水浒传 | 40 |
4 | 三国演义 | 50 |
导入语句:
LOAD CSV WITH HEADERS FROM "file:///book.csv" AS line
MERGE (:Book{bid:line.bid,name:line.name,price:line.price})
解释:line相当于别名,:Book,此处Book是实体类的类别
cbs.csv(如下表):
cid:出版社属性——自定义的出版社id
name:出版社属性——名称
address:出版社属性——地址
cid | name | address |
---|---|---|
1 | 北京出版社 | 北京 |
2 | 上海出版社 | 上海 |
3 | 广州出版社 | 广州 |
4 | 武汉出版社 | 武汉 |
导入语句:
LOAD CSV WITH HEADERS FROM "file:///cbs.csv" AS line
MERGE (:出版社{cid:line.cid,name:line.name,address:line.address})
relation.csv(如下表):
from:bid——书本id
to:cid——出版社id
relation:关系
from | to | relation |
---|---|---|
1 | 1 | 出版于 |
2 | 2 | 出版于 |
3 | 3 | 出版于 |
4 | 4 | 出版于 |
导入语句:
LOAD CSV WITH HEADERS FROM "file:///relation.csv" AS line
match (from:Book{bid:line.from}),(to:出版社{cid:line.to})
merge (from)-[r:出版于{relation:line.relation}]->(to)