目录

一、删除数据方案

方案1、我们可以通过以下查询删除所有节点和关系:

方案2、我们可以删除所有有关系的节点:

方案3、删除graph.db数据库文件:

1. 关闭Neo4j服务器进程

2. 删除graph.db数据库文件

3. 重新启动Neo4j服务器

4. 连接Neo4j Browser重设密码

二、数据迁移导入导出

关闭Neo4j:

数据导出:

数据导入:

重启服务:


一、删除数据方案

方案1、我们可以通过以下查询删除所有节点和关系:

MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r

但是新创建的节点获取内部ID为({last node internal id} 1)。它不会重置为零。我们如何重置neo4j数据库,如新创建的节点将获取id为0?

方案2、我们可以删除所有有关系的节点:

MATCH (n) DETACH DELETE n

方案3、删除graph.db数据库文件:

在开发过程中,很多时候需要快速清除(简单粗暴)Neo4j中存在的海量数据节点和关系数据。当数据量太大,关系节点过多这种情况下,delete和detach从性能上都已力不从心。Neo4j官方推荐清库方法,即删除graph.db数据库文件,暴力清空数据库。

1. 关闭Neo4j服务器进程

Neo4j数据进行备份、还原、迁移的操作时,首先要关闭neo4j;

# 进入目录 /usr/share/neo4j/bin
neo4j stop
# 输出Neo4j not running

出现这种情况, Neo4j没有运行, 但是浏览器仍然可以访问neo4j数据库的情况,直接执行导入数据后,是无法看到导入的数据库,其实这种情况下Neo4j仍在运行(否则浏览器是无法然访问的),这就需要强制杀死Neo4j进程,则执行命令 

ps -ef|grep neo4j

Neo4j图形数据库——数据清除与数据迁移-LMLPHP

检查服务器进程是否启动,如启动,可通过kill -9或其它方式杀掉服务器进程。

kill -9 <对应的pid>

关闭Neo4j后,再次用浏览器访问Neo4j,是无法访问的,说明Neo4j是关闭运行了,在此情况下,是可以执行Neo4j的数据库删除、数据的导出与导入。

2. 删除graph.db数据库文件

找到<NEO4J_HOME>/data/databases/路径(我的是在/usr/share/neo4j/data/databases),可以看到graph.db文件夹。进入对应目录下,删除此文件夹即可。
Linuxx系统、树莓派系统可通过以下命令删除

rm -rf graph.db

3. 重新启动Neo4j服务器

通过在/usr/share/neo4j/bin目录下执行如下命令启动Neo4j:

./neo4j console 

Neo4j在启动过程中,会发现graph.db文件夹丢失,重新建立新数据,从而完成清空任务。

4. 连接Neo4j Browser重设密码

由于数据库重新建立,需要重新设置数据库用户名和密码。可通过连接启动后的Neo4j Browser重新设置,也可通过命令行等进行设置。默认账号密码均为neo4j。
通过以上四个步骤,即完成了Neo4j数据的清空。

二、数据迁移导入导出

在对Neo4j数据进行备份、还原、迁移的操作时,首先要关闭neo4j,如果要清空数据请参考上一步骤。

关闭Neo4j:

# 关闭Neo4j数据库
cd %NEO4J_HOME%/bin
./neo4j stop

数据导出:

# Linux、树莓派系统等环境下
./neo4j-admin  dump --database=graph.db --to=/home/pi/Downloads/graph.db.dump

# Windows系统
neo4j-admin  dump --database=graph.db --to=D:\graph.db.dump

之后,进行数据迁移,将生成的存储文件拷贝到另一个相同版本的环境中,(测试中可以进行清空Neo4j库操作:match (n) detach delete n ),还原、迁移之前 ,关闭neo4j服务。操作同上。

数据导入:

# Linux、树莓派系统环境下
./neo4j-admin load --from=/home/pi/Downloads/graph.db.dump --database=graph.db --force

# Windows环境下
neo4j-admin load --from=D:\graph.db.dump --database=graph.db --force

重启服务:

neo4j start

一般遇到需要将大规模的数据节点和关系导入Neo4j数据库中时,建议采用这种导出导入的方式,效率很高,速度很快。本人是在树莓派上安装了Neo4j数据库,并且将Windows系统里的Neo4j数据库数据导入到树莓派系统中。

 

09-17 06:03