一、导入工具
导入CSV文件的方式:
- Load CSV 指令 (增量式导入的导入到原数据库总)
- neo4j-import 、neo4j-admin命令行工具(导入到新建的数据库中)
- 第三方导入工具,如batch-import (不推荐)
batch-import工具下载地址:https://github.com/jexp/batch-import
Neo4j命令行导入工具有两种:
- neo4j-import
- neo4j-admin import (推荐使用)
两种工具使用方式相同,推荐使用neo4j-admin import
1.1、准备csv数据文件
以电影、演员和角色图数据集为例,先将path_to_target_directory修改为数据库文件目录,默认安装下path_to_target_directory指向<neo4j-home>/data/databases/graph.db文件。其中电影节点文件为movies.csv,每部电影都有一个编号id,便于外部数据源的引用,另外每部电影都有电影名和年份属性,并为每个节点添加了Movie和Sequel标签。该文件内容示例如下:
movieId:ID,title,year:int,:LABEL
tt0133093,"The Matrix",1999,Movie
tt0234215,"The Matrix Reloaded",2003,Movie;Sequel
tt0242653,"The Matrix Revolutions",2003,Movie;Sequel
演员节点文件为actors.csv,每个演员有两个属性:编号(姓名的缩写)、姓名,并带有Actor属性,该文件内容示例如下:
personId:ID,name,:LABEL
keanu,"Keanu Reeves",Actor
laurence,"Laurence Fishburne",Actor
carrieanne,"Carrie-Anne Moss",Actor
接下来,角色文件为roles.csv,保存演员与电影之间的关系,START_ID为演员节点中的编号,END_ID为电影中的编号,role字段为该演员在这部电影中所扮演的角色名,TYPE字段为关系类型(在本例中为ACTED_IN)。该文件内容示例如下:
:START_ID,role,:END_ID,:TYPE
keanu,"Neo",tt0133093,ACTED_IN
keanu,"Neo",tt0234215,ACTED_IN
keanu,"Neo",tt0242653,ACTED_IN
laurence,"Morpheus",tt0133093,ACTED_IN
laurence,"Morpheus",tt0234215,ACTED_IN
laurence,"Morpheus",tt0242653,ACTED_IN
carrieanne,"Trinity",tt0133093,ACTED_IN
carrieanne,"Trinity",tt0234215,ACTED_IN
carrieanne,"Trinity",tt0242653,ACTED_IN
1.2、使用导入命令导入
导入前确保Neo4j是关闭的状态
注意 :neo4j-import、neo4j-admin import 工具,并不是增量往数据库里导入数据,而已直接生成一个导入了csv数据的新数据库
接下来调用数据导入neo4j-import命令如下:
neo4j-import --into newgraph.db --nodes movies.csv --nodes actors.csv --relationships roles.csv
注意:movies.csv actors.csv roles.csv三个文件必须放在neo4j-import命令文件同一目录下,否则必须指定完整路径 另外,–into newgraph.db 会在neo4j-import命令文件同一目录下创建一个新的 graph.db数据文件,而不是neo4j默认数据库,想要导入到neo4j默认数据库,需要指定默认数据库graph.db的完整路径
neo4j- admin import命令如下:
neo4j-admin import --nodes movies.csv --nodes actors.csv --relationships roles.csv
neo4j- admin 不指定导入的目标数据库则默认为neo4j的默认数据库
完成后则可以启动数据库,命令如下:
neo4j start
1.3、CSV文件注意事项
在创建输入文件时需要注意如下几点:
- 默认情况下,字段以逗号分隔,但可以指定其它分隔符;
- 所有文件必须使用相同的分隔符;
- 节点和关系可以保存在多个数据源;
- 数据源可来源于多个文件;
- 提供数据字段信息的标题必须位于每个数据源的第一行;
- 在标题中没有相应信息的字段将不会被导入;
- 采用UTF-8编码。
导入时不需要创建索引,导入完成后再添加。
如果无法使用此工具进行数据导入,且加载的CSV文件为中小型,可以使用LOAD CSV方式。
1.4、 CSV文件头格式
每个数据源的标题行负责解释文件中的字段,标题行与余下数据行具有相同的定界符。每个字段的格式为:<name>:<field_type>,<name>为属性值, <field_type>用于节点和关系:
属性值(Property value)——数据类型可以是:int、long、float、double、boolean、byte、short、char、string。如果未指定数据类型,则默认为string类型。数组类型在上述类型后面加上[]即可。默认情况下,数组值由分号(;)分隔,也可以使用--array-delimiter指定为其它分隔符。
节点(Node)——节点须有ID和LABEL字段,每个节点在导入前必须指定唯一编号(ID),以利于在创建关系时能正确查找到相应的节点。ID必须唯一,即使某节点具有不同的标签。LABEL字段用于读取一个或多个标签,与数组类似,多个标签由分号(

本文详细介绍了Neo4j中数据的导入与导出方法,包括使用neo4j-import、neo4j-admin import工具批量导入CSV数据,以及LOADCSV命令逐行导入数据的流程。同时,文章还讲解了如何利用neo4j-apoc-procedures插件导出数据为CSV格式或Cypher创建语句。
最低0.47元/天 解锁文章
1719

被折叠的 条评论
为什么被折叠?



