neo4j 大量数据的批量导入

来源:互联网 发布:邮轮上有网络吗 编辑:程序博客网 时间:2024/06/05 07:02

这篇文章 将记录使用neo4j-import 工具进行大批量数据快速导入neo4j数据库中的具体过程。

Super Fast Batch Importer For Huge Datasets Into Neo4j Graph Database


官方文档在这里:

https://neo4j.com/developer/guide-import-csv/#_super_fast_batch_importer_for_huge_datasets


1. 数据准备

使用批量数据导入的时候,需要将数据准备为csv格式,即每个字段使用,

进行分隔。比如我们现在有人名,地名,组织名三种属性的实体(这些实体也即是neo4j中的节点),实体的属性为了简单只有名字和id,实体之间的关系也为了简单只有一个种关系,所有存在的关系名都叫relation。下面我们将三种实体和关系分为三个csv文件保存,文件的内容大致如下:

    1. person.csv
id:ID name 1 马云 2 马化腾 … ….

- 2. location.csv

id:ID name 3 北京 4 上海 … ….

- 3. organization.csv

id:ID name 5 阿里巴巴集团 6 联想集团 … ….

- 4. relation.csv

:SATART_ID :END_ID links 1 5 董事局主席 2 马化腾 xxx … …. …

需要注意的是,三个实体表中的:ID是必须写的(个人在实验中开始没有写,结果导入关系的时候报错)

id的序号是唯一的,如果你是按照我这种关系表只有一个 ,那么三个表中实体的id是唯一的,如果你的关系表中是区别两两关系的,可以不是唯一的,这种情况可以参考官方给出的例子。


2. 导入

导入的时候我是在windows上进行的,所以请在cmd中将路径转到pat/neo4j/bin目录下。
使用如下命令进行四个csv文件的导入:

neo4j-import.bat --into ../data/databases/graph.db --id-type string--nodes:person ../import/person.csv --nodes:organization ../import/organization.csv --relationships:Links ../import/relation.csv

我将文件放在了path/neo4j/import目录下了,所以的路径使用的是相对路径指向文件所在。上述命名的第一行的graph.db是配置文件中激活默认的数据库名,路径在path/neo4j/data/databases/下。如果该目录下graph.db存在,那么会创建失败,因为batch import是为了初次数据导入准备的,这个数据库目录必须是不存在的。

导入成功的截图:

这里写图片描述

3.需要注意点

3.1 使用LOAD CSV 批量导入数据

可以在浏览器端或者是neo4j的console下进行这种方式的数据导入,但是这种方式只适用于20M以内的数据导入,对于大量数据是不适用的。

3.2 –nodes:xxx

这里:后面表示的是节点的LABEL-NAME,和使用create(“马云”:Person)中的Label-Name等效.

同理relationships:xxx这个冒号后面的等同[R:XXX]是一样的

3.3 停止数据库服务

在使用上面的import的时候,必须关闭neo4j的数据库服务,如果–into后面的数据表不是conf中配置的db,请修改后再启动。否则是查不到任何导入的数据的。

Reference

  1. https://neo4j.com/developer/guide-import-csv/#_super_fast_batch_importer_for_huge_datasets