neo4j学习总结--第九课 neo4j 数据导入与导出

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

一、导入工具

导入CSV文件的方式:

  1. Load CSV 指令 (增量式导入的导入到原数据库总)
  2. neo4j-import 、neo4j-admin命令行工具(导入到新建的数据库中)
  3. 第三方导入工具,如batch-import (不推荐)

       batch-import工具下载地址:https://github.com/jexp/batch-import

Neo4j命令行导入工具有两种:

  1. neo4j-import
  2. 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文件注意事项

在创建输入文件时需要注意如下几点:

  1. 默认情况下,字段以逗号分隔,但可以指定其它分隔符;
  2. 所有文件必须使用相同的分隔符;
  3. 节点和关系可以保存在多个数据源;
  4. 数据源可来源于多个文件;
  5. 提供数据字段信息的标题必须位于每个数据源的第一行;
  6. 在标题中没有相应信息的字段将不会被导入;
  7. 采用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字段用于读取一个或多个标签,与数组类似,多个标签由分号(

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值