neo4j如何批量初始化数据库?neo4j-admin导入csv数据
发布于 作者:苏南大叔 来源:程序如此灵动~知识图谱系统的一个重要组成形式就是neo4j
图形数据库。那么,大量的数据是如何在图形数据库neo4j
中初始化的呢?neo4j
又是如何导入大批量数据的呢?本文中,苏南大叔将要来探讨一下neo4j
导入大批量数据的可能性。
大家好,这里是苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码的故事。本文中,描述neo4j
数据库初始化所需要的两个csv
文件的基本格式,以及导入数据库的命令是如何使用的。本文测试环境:win10
,neo4j@4.4.3
,java@11.0.12
。
首先要准备两个特殊的csv
文件,这两个特殊的文件其实就是neo4j
的三元组数据的另外的一种组成形式。如果您确定了三元组的数据,就可以通过组合nodes.csv
和relationships.csv
来组成初始化数据的资料。
特别提示:如果您要修改这两个csv
文件,最好使用普通的文本编辑器编辑,比如vscode
或者notepad
或者ultraedit
等等,文件编码utf-8
。如果使用wps
或者excel
编辑的话,可能会导致数据错乱/文件乱码等问题。
实体文件的编码对应关系nodes.csv
文件的名称并不重要,但是为了描述文章方便,这里把它称之为nodes.csv
。这个文件记录实体名称及其编号还有标签数据。重要的是:文件的表头名称,必须是固定的。
entity:ID
,实体id编号,自己生成的不重复数据编号。name
,实体名称。:LABEL
,标签,多个标签使用英文分号;
分割。
如下图所示:
值得特别说明的是:
- 标签并不是唯一固定不变的,多个标签之间是用分号
;
分割的。标签是neo4j
查询语言中的重要组成形式。所以,标签需要重点考虑设置。
关系描述文件relationships.csv
同上一个文件一样,文件名relationships.csv
并不重要,重要的是格式。必须包含的表头是:
:START_ID
,对应于entity.csv
中的entity:ID
。:TYPE
,关系文字。:END_ID
,对应于entity.csv
中的entity:ID
。
特别说明的是:
- 表头数据里面,上述三个固定表头仅仅是必须项目,
csv
文件中允许出现其它数据列。如果出现了,就会以“关系对应关系”的属性形式出现在neo4j
数据库中。
如下图所示:
执行import命令
首先要找到neo4j-admin
文件的位置,以及两个关系描述文件的位置。导入命令如下:
neo4j-admin import --nodes "nodes.csv" --relationships "relationships.csv" --force
其中的--nodes
和--relationships
参数都需要完整路径,否则就会找不到文件。
对于苏南大叔的测试环境来说,这个命令就是:
E:\neo4j-community-4.4.3\bin\neo4j-admin.bat import --nodes "E:\data\nodes.csv" --relationships "E:\data\relationships.csv" --force
执行这个命令的时候,会重置已有的数据库。原有的数据会消失不见,所以后面有个--force
的参数。否则会有下面类似的错误提示信息:
Database already exist. Re-run with `--force` to remove the database prior to import
Caused by:E:\neo4j-community-4.4.3\data\databases\neo4j already contains data, cannot do import here
执行restart命令
然后执行重启neo4j
服务的命令,上述数据才会被识别,否则管理界面上显示的永远是老数据。
neo4j restart
对于苏南大叔的测试服务器来说,就是:
E:\neo4j-community-4.4.3\bin\neo4j.bat restart
参考文献
总结
本文中,苏南大叔总结了:neo4j
初始化数据库时所需要的nodes.csv
和relationships.csv
文件的格式,以及neo4j-admin
的import
和restart
命令。通过上述命令的不断重复执行,就可以达到调试调整neo4j
数据的目的。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。