这篇文章 将记录使用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中的节点),实体的属性为了简单只有name和id,实体之间的关系也为了简单只有一个种关系,所有存在的关系标签都叫relation。下面我们将三种实体和关系分为三个csv文件保存,文件的内容大致如下:
-
- 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 | 6 | xxx |
… | …. | … |
需要注意的是,三个实体表中的:ID是必须写的,并且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,请修改后再启动。否则是查不到任何导入的数据的。