目录
一、删除数据方案
方案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
检查服务器进程是否启动,如启动,可通过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数据库数据导入到树莓派系统中。