我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

再把视线转回以前的话题,图数据库neo4j。图数据库里面的数据,如何用官方给的工具导入导出呢?如何才能给数据库进行备份呢?如何转移数据库呢?又如何把备份好的数据进行还原呢?

苏南大叔:neo4j图数据库,如何利用neo4j-admin备份还原数据库? - neo4j-admin
neo4j图数据库,如何利用neo4j-admin备份还原数据库?(图4-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的故事。本文的主角是neo4j-admin,使用这个工具,可以导入导出数据库为.dump文件。该文件不能被常见的类似记事本等软件打开,打开也是看不懂的乱码。本文测试环境:win10neo4j@4.4.3

基础知识

本文涉及的两个命令是:neo4j-admin dumpneo4j-admin load。以前还涉及过一个命令neo4j-admin import,参考文章:

本文中的neo4jwin10环境下的,其有个bin/目录,里面的neo4j.bat是用于启动、停止、或者重启的。参考文章:

默认情况下,因为是必须安装系统服务的。所以,开机后neo4j就是启动状态,不用额外再start。但是本文中对数据库图进行导入和导出的操作,都要求数据库是stop状态。所以,您需要主动执行如下命令:

neo4j stop

否则就会得到下面类似的错误信息:

The database is in use. Stop database 'neo4j' and try again.

等着本文中描述的导入导出操作完成后,再执行:

neo4j start

列出数据库图(可选)

neo4j和传统的mysql之类的类似,其内部都是有一个一个的数据库图的。那么,你要执行导入导出的时候,需要指明目标数据库图的名称。neo4j内部的数据库图默认有两个,一个是system,另外一个是neo4j(默认的就是它,其实也没有啥好确定的。社区版的neo4j,没改配置的话,就是这个图。)。

在有的neo4j版本中,数据库图的名字后面还带有.db三字,比如:neo4j.db。这仅仅是个名字,并没有啥特别的意思。在传递参数的时候,照着传就行。

neo4j的管理界面,执行下面的语句就可以列出所有的数据库图。命令如下:

:dbs

这个时候,neo4j就会异常友好的显示出现有的数据库图名字。如下图所示:

苏南大叔:neo4j图数据库,如何利用neo4j-admin备份还原数据库? - 显示所有的数据库
neo4j图数据库,如何利用neo4j-admin备份还原数据库?(图4-2)

当然,您还可以查看文件夹结构,也是能够看出来有几个数据库图的。比如查看目录:
<neo4j>/data/databases/ 或者 <neo4j>/data/transactions/

导出(备份)数据库

要导出数据库,首先要确定自己要操作的数据库图名字,然后想清楚数据库要导出到哪里,然后停止neo4j服务。

neo4j-admin dump --database=neo4j --to=e:\backup.dump

导出得到的.dump文件,二进制打不开看不懂,就算是个外星文件吧。

苏南大叔:neo4j图数据库,如何利用neo4j-admin备份还原数据库? - 导出文件格式
neo4j图数据库,如何利用neo4j-admin备份还原数据库?(图4-3)

然后记得再次启动neo4j服务。

单独备份还原/data/databases/neo4j/文件夹是不能完成任务的,并不能识别其中的节点数据。可能需要配合system文件夹一起操作。但是,这样似乎也不是很合适。

导入(还原)数据库

到导入数据库,一样要先确定要操作的目标数据库图名字,然后想清楚要导入的备份文件的位置,重要的是要停止neo4j服务。

neo4j-admin load --from=e:\backup.dump --database=neo4j

如果要操作的数据库图名字已经存在的话(即使里面没有任何数据),这里会导入失败。可能会得到下面类似的错误提示信息:

Database already exists: neo4j

推荐:这里需要使用一个--force参数,强制导入。

neo4j-admin load --from=e:\backup.dump --database=neo4j --force

不推荐:或者写一个新的肯定不存在的数据库图名字,也可以。这样的话,保证不会失败。例如:

neo4j-admin load --from=e:\backup.dump --database=neo4j2

对于社区版的neo4j来说,除了system之后,只能支持一个图。所以,新的neo4j2图确实能建立成功,但是不能同时和原来默认的图同时在线,这就导致这个图的建立没有啥意义了,这只能怪使用的是社区版本。

苏南大叔:neo4j图数据库,如何利用neo4j-admin备份还原数据库? - 导入导出
neo4j图数据库,如何利用neo4j-admin备份还原数据库?(图4-4)

然后记得再次启动neo4j服务。

参考文献

综述

本文讲述的是neo4j-admin操作.dump文件,实现导入导出备份还原的全过程。但是导出的.dump文件没有任何的可读性,不存在任何的sql语句在里面。所以,暂时无法实现对.dump文件的物理修改。

更多neo4j的经验文章,请点击苏南大叔的博客。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   neo4j