neo4j-admin[1] 是neo4j官方出的海量数据入库的方法,看了现网的案例,都写的迷迷糊糊的,果断看英文官方文档,慢慢啃完之后,突然感觉受益匪浅。海量csv文件入库,为了降低存储,可以压缩,既可以pandas直接压缩,也可以zipfile压缩。压缩前242M,压缩后53M,存储效果明显变好。另外,海量csv文件入库,可以使用正则表达式,简化脚本。针对千万级数据测试发现,速度比load csv快将近10倍。

有head的csv文件

movies.csv 注意:

  • :LABEL 节点才有标签,多标签使用“;”分号连接
  • 节点必须有ID,因为边的csv需要节点ID
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

personId:ID,name,:LABEL
keanu,"Keanu Reeves",Actor
laurence,"Laurence Fishburne",Actor
carrieanne,"Carrie-Anne Moss",Actor

roles.csv 注意:

  • :TYPE 边才有类型
  • :START_ID和:END_ID是节点中的ID,因为边是由2个节点构成
: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

第一步:导入csv文件

bin/neo4j-admin import --nodes=import/movies.csv --nodes=import/actors.csv --relationships=import/roles.csv

第二步:启动neo4j

bin/neo4j start

第三步:在浏览器中查看

没有head的csv文件

  • movies3-header.csv
movieId:ID,title,year:int,:LABEL

  • movies3.csv
tt0133093,"The Matrix",1999,Movie
tt0234215,"The Matrix Reloaded",2003,Movie;Sequel
tt0242653,"The Matrix Revolutions",2003,Movie;Sequel

actors3-header.csv

personId:ID,name,:LABEL

actors3.csv

keanu,"Keanu Reeves",Actor
laurence,"Laurence Fishburne",Actor
carrieanne,"Carrie-Anne Moss",Actor

roles3-header.csv

:START_ID,role,:END_ID,:TYPE

roles3.csv

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

将文件头和内容分离之后,遍可以导入了。注意,这里同一标签的节点使用“,”逗号来连接,同一类型的边也是使用“,”逗号来连接。

bin/neo4j-admin import --nodes=import/movies3-header.csv,import/movies3.csv --nodes=import/actors3-header.csv,import/actors3.csv --relationships=import/roles3-header.csv,import/roles3.csv

大量文件输入

如果有大量的文件输入,可以使用","逗号继续连接。

  • --nodes=import/movies4-header.csv,import/movies4-part1.csv,import/movies4-part2.csv
  • --nodes=import/actors4-header.csv,import/actors4-part1.csv,import/actors4-part2.csv
  • --relationships=import/roles4-header.csv,import/roles4-part1.csv,import/roles4-part2.csv
bin/neo4j-admin import --nodes=import/movies4-header.csv,import/movies4-part1.csv,import/movies4-part2.csv --nodes=import/actors4-header.csv,import/actors4-part1.csv,import/actors4-part2.csv --relationships=import/roles4-header.csv,import/roles4-part1.csv,import/roles4-part2.csv

输入正则简化

当有大量文件输入时,内容会很长,为了简化脚本,可以使用正则表达式,注意这里需要使用双引号包住全部内容,非常适合海量数据入库。需要特别特别注意(.*),之前光写一个*,就会出现正则错误。谨记!!!顺便在多一句嘴,neo4j 3.5 - neo4j 4.x 都支持正则呦 ,亲测有效,在语法层面上,后面的 -- skip --ignore 参数有点不一样 ~

  • --nodes="import/movies4-header.csv,import/movies4-part.*"
  • --nodes="import/actors4-header.csv,import/actors4-part.*"
  • --relationships="import/roles4-header.csv,import/roles4-part.*"
bin/neo4j-admin import --nodes="import/movies4-header.csv,import/movies4-part.*" --nodes="import/actors4-header.csv,import/actors4-part.*" --relationships="import/roles4-header.csv,import/roles4-part.*"

输入标签和类型简化

由于节点存在大量冗余的label,边存在大量冗余的type,为了简化csv,可以指定统一的标签和类型。

  • --nodes=Movie=import/movies5a.csv (全是Movie标签)
  • --nodes=Movie:Sequel=import/sequels5a.csv (全是Movie:Sequel标签)
  • --nodes=Actor=import/actors5a.csv(全是Actor标签)
  • --relationships=ACTED_IN=import/roles5a.csv(全是ACTED_IN类型)
bin/neo4j-admin import --nodes=Movie=import/movies5a.csv --nodes=Movie:Sequel=import/sequels5a.csv --nodes=Actor=import/actors5a.csv --relationships=ACTED_IN=import/roles5a.csv

ID空间

为了让不同的节点的ID字段不打架,可以使用ID空间有优化。

  • movies7.csv(括号里面就是 Movie-ID,可以自由增长)
movieId:ID(Movie-ID),title,year:int,:LABEL
1,"The Matrix",1999,Movie
2,"The Matrix Reloaded",2003,Movie;Sequel
3,"The Matrix Revolutions",2003,Movie;Sequel

  • actors7.csv(括号里面就是 Actor-ID,可以自由增长)
personId:ID(Actor-ID),name,:LABEL
1,"Keanu Reeves",Actor
2,"Laurence Fishburne",Actor
3,"Carrie-Anne Moss",Actor

  • roles7.csv(直接依赖节点的ID空间)
:START_ID(Actor-ID),role,:END_ID(Movie-ID)
1,"Neo",1
1,"Neo",2
1,"Neo",3
2,"Morpheus",1
2,"Morpheus",2
2,"Morpheus",3
3,"Trinity",1
3,"Trinity",2
3,"Trinity",3

跳过异常关系

使用 --skip-bad-relationships 跳过异常关系(备注:neo4j v4.0+)

bin/neo4j-admin import --skip-bad-relationships --nodes=import/movies8a.csv --nodes=import/actors8a.csv --relationships=import/roles8a.csv

跳过相同ID的节点

使用 --skip-duplicate-nodes 跳过相同ID的节点(备注:neo4j v4.0+)

bin/neo4j-admin import --skip-duplicate-nodes --nodes=import/actors8b.csv

neo4j-admin 海量数据入库教程研究相关推荐

  1. 不动产测绘数据入库_不动产数据整合中房地信息与各类测绘数据关联入库方法研究...

    2018 年 5 月 测绘与空间地理信息 GEOMATICS & SPATIAL INFORMATION TECHNOLOGY Vol.41 ꎬ No.5 May ꎬ 2018 收稿日期 : ...

  2. neo4j中文社区 php,neo4j 社区版搭建教程

    neo4j搭建教程 版本说明 软件 版本 jdk jdk1.8.0_201 neo4j需要提前按照java8 并且配置好jdk neo4j-community 3.5.14 neo4j 社区版 硬件环 ...

  3. Neo4j 安装、使用教程

    文章目录 一.Neo4j 的安装与配置 1.安装JDK 2.安装Neo4j 3.Neo4j环境变量配置 4.启动服务器 二.Neo4j 使用教程 一.Neo4j 的安装与配置 1.安装JDK 由于Ne ...

  4. Neo4J超详细专题教程,快来收藏起来吧

    Neo4J超详细教程 Lecture:波哥 一.Neo4J相关介绍 1.为什么需要图数据库   随着社交.电商.金融.零售.物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系 网,传统数据库 ...

  5. Neo4j 全网最详细教程

    Neo4j的语法(3.5版本) 1.公式模式是语法范式 2.代码模式是实例,可按顺序复制执行 3.涉及所有可能的节点.节点类型.属性,关系,关系类型.属性的增删改查 4.学习本教程之后可以学习 neo ...

  6. 自动化立体仓库出入库调度研究

    1 引言 自动化立体仓库是一种用计算机控制管理和用自动控制装置控制堆垛机进行存取作业的仓库.对于给定的自动化立体仓库,其运行效率高低与出入库调度系统的设计好坏有密切关系,文献?1?3?对自动化立体仓库 ...

  7. Valine Admin修改版教程

    这里是基于Valine Admin修改版的教程文档.如还没有配置基本参数,请移步到Valine Admin后台搭建(最新修订版)

  8. win10 + neo4j + jdk 完美安装教程 欲哭无泪贴!!教你彻底卸载老的jdk!

    本安装必须按照版本来,否则后果自理!!!! 各种安装包见评论区 一.安装Java环境 1.0 jdk-13.0.2 一定是要这个版本 1.1 在系统变量里新建"JAVA_HOME" ...

  9. Django admin 后台定制库存管理的中的入库管理

    Django 的admin或xadmin定制后台管理十分方便,在此就不多说了,我今天想说的一个问题是,如何实现admin的不同表间不同字段的管理操作(描述不太清晰,不要在意).(使用MySQL数据库) ...

最新文章

  1. php常见排序算去,PHP兑现常见排序算法
  2. MybatisPlus中insert方法与insertAllColumn方法的区别
  3. C# 数据结构 之 堆栈和队列
  4. 2016年最值得学习的五大开源项目
  5. Javascript第五章切换层效果、复选框的全选十三课
  6. fp16和fp32,神经网络混合精度训练,PYTORCH 采用FP16,Libtorch采用FP16,神经网络混合精度三种避免损失,TensorRT模型转换及部署(一)
  7. JSON Web Token从入门到精通
  8. 行业方案|“医疗”行业智能运维解决方案介绍
  9. 网管警惕:能突破网关限制的七大软件(转)
  10. inno setup 卸载注册表_Inno Setup Compiler卸载时删除注册表
  11. 用R包TCGA-Assembler下载TCGA数据
  12. 分布式ID生成算法——雪花算法
  13. Vue 的最大的优势是什么?
  14. Ubuntu 搭建opengrok 流程
  15. dell720服务器支持的显卡,Dell Poweredge 服务器显卡选择
  16. 在proteus中的排阻的查找_PROTEUS中这个排阻怎么找到?
  17. 计算机管理 存储空间不足,win10系统提示“存储空间不足无法处理此命令”的处理技巧...
  18. 媒体实录:百度林元庆第一时间解读百度大脑VS.最强大脑第一场
  19. 1926163-51-0|肽基脯氨酰异构酶底物:WFY(p)SPR-7-氨基-4-甲基香豆素
  20. iOS摸鱼周报 第二十四期

热门文章

  1. DHCP Lease Time - 动态 IP 使用时限
  2. 为什么粘滞定位失效问题
  3. 一个资源 C2C 的资源平台
  4. 业务打版上线注意事项
  5. fontforge制作MiniGUI的 旋转字库
  6. 酒精测试仪方案PCBA结构及功能讲解
  7. 这个AI绘图工具火了!制作新海诚【你的名字】AI漫画
  8. javascript获取年月日
  9. 众多新功能来袭:IntelliJ IDEA 2022.1正式发布
  10. Http状态码大全(404、500、505等)