2018-11-19 Neo4j百万级数据导入只能用neo4j-import
image.png
业务需要使用Neo4j出数据关系展示图,数据库里有2张表通过一个字段进行关联,数据量是90万和500万,关系量是150w;
从一开始使用REST API 循环导入,但创建节点没有问题,但是要通过将数据导入内存再生出关联关系就出现内存不足了;
后来通过cypher 语句,load csv 来创建节点和关系,创建节点时,数据超过20w条就不行了,创建关系更是慢的不行,注意:windows下load csv文件路径为:file:/d:/csv/company.csv,官网上写的貌似不行;
以上2种方法可以对少量数据进行操作。 百万级数据可以使用下面这种方法: 1、先生成csv文件,按格式来:
文件名:company-header.csv
内容:
regno,name,id:ID
文件名:company.csv
内容:
1234,apple,c001
文件名:person.csv
内容:
cerno,name,id:ID
3201,jobs,p001
文件名:relationship.csv
内容:
:START_ID,:END_ID,:TYPE
p001,c001,creator
然后通过neo4j官方提供的Neo4jImport来操作,具体指令是: cmd下先进入Neo4j文件夹,执行命令:binneo4jimport –into data/graph.db –nodes:Company company-header.csv,company.csv –nodes:Person person.csv –relationships relationship.csv
注意文件地址可以使用相对地址,也可以使用绝对地址
上面是2中风格的写法,文件头和文件内容分开写,头和内容写一起,分开写的好处是修改文件头的时候,不用打开文件内容,如果文件内容太大,打开容易卡死;
文件头中:ID是用来创建关系时的连接点,:START_ID是关系起始点; :END_ID是关系结束点;:TYPE是关系类型; 上列中还有没用到的是:LABEL是用来创建标签的,一组数据可以设置多个标签,用分号分隔;
这是我导入数据的用时:
400W节点,180W关系,用时30s 以上这种方式只能一次创建好数据库,该命令不能分批对一个数据库进行操作
- 06.LoT.UI 前后台通用框架分解系列之——浮夸的图片上传
- 07.LoT.UI 前后台通用框架分解系列之——轻巧的文本编辑器
- 07.LoT.UI 前后台通用框架分解系列之——强大的文本编辑器
- 洛谷P3358 最长k可重区间集问题(费用流)
- 08.LoT.UI 前后台通用框架分解系列之——多样的Tag选择器
- iOS多线程——RunLoop与GCD、AutoreleasePool你要知道的iOS多线程NSThread、GCD、NSOperation、RunLoop都在这里
- iOS多线程——你要知道的RunLoop都在这里你要知道的iOS多线程NSThread、GCD、NSOperation、RunLoop都在这里
- iOS网络——AFNetworking AFHttpSessionManager源码解析
- iOS网络——SDWebImage SDImageDownloader源码解析你要知道的NSURLSession都在这里
- iOS缓存 NSCache详解及SDWebImage缓存策略源码分析你要知道的NSCache都在这里
- freeRTOS信号量学习
- 微信扫码支付+Asp.Net MVC
- Linq中连接主要有组连接、内连接、左外连接、交叉连接四种
- 深入源码理解YYCache 、SDWebImage、AFNetworking、NSCache 缓存方式与对比
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- php数组hashtable的巧妙设计
- php运行生命周期--模块初始化php_module_startup
- Visual Studio Code的用户设置相关
- php运行生命周期--请求初始化php_request_startup
- 如何在SAP Spartacus自定义UI里使用标准UI的上下文数据
- php运行生命周期--脚本执行阶段 php_execute
- SAP Spartacus中Angular json pipe的工作原理
- 02.Android崩溃Crash库之App崩溃分析
- mysql事务的实现原理
- 如何通过outlet在SAP Spartacus的产品明细页面插入自定义UI
- 防盗链的原理以及实现
- Python如何根据日期判断周几
- http常见状态码
- golang time相关总结
- [白话解析] 深入浅出熵的概念 & 决策树之ID3算法