是否可以像在 MySQL中一样在图形数据库Neo4j中创建/删除不同的数据库?或者,至少,如何删除现有图形的所有节点和关系以获得干净的测试设置,例如,使用类似于rmrel
or的 shell 命令rm
?
13 回答
您可以使用 删除整个图形目录rm -rf
,因为 Neo4j 不存储除此之外的任何内容:
rm -rf data/*
此外,您当然可以遍历所有节点并删除它们的关系和节点本身,但这对于测试来说可能过于昂贵......
删除所有节点和关系的更简单的命令:
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
在 Neo4j 中创建新数据库
在启动 neo4j 社区之前单击浏览选项
并选择一个不同的目录
并单击开始按钮。
在该目录上创建的新数据库
快速而肮脏的方式,效果很好:
bin/neo4j stop
rm -rf data/
mkdir data
bin/neo4j start
对于需要干净图表来运行测试套件的其他任何人 - https://github.com/jexp/neo4j-clean-remote-db-addon是一个很好的扩展,允许通过 REST 调用清除数据库。但是,显然,不要在生产中使用它!
在不同的 neo4j 实例上运行您的测试代码。
- 将 neo4j 目录复制到新位置。使用它进行测试。cd 进入新目录。
- 更改端口,以便您可以同时运行测试并正常使用它。更改端口打开
conf/neo4j-server.properties
并设置org.neo4j.server.webserver.port
为未使用的端口。 - 在设置时启动测试服务器。做
./neo4j stop
和rm -rf data/graph.db
拆解。
有关更多详细信息,请参阅neo4j:如何切换数据库?和文档。
在 Neo4j 2.0.0 中?不再支持。改用可选匹配:
START n=node(*)
OPTIONAL MATCH (n)-[r]-()
delete n,r;
最简单的答案是:NO
“重新开始”的最佳方式是
- 移动到另一个空数据文件夹
或者
- 完全关闭 Neo4j
- 清空旧数据文件夹
- 重启 Neo4j 并将空文件夹设置为数据文件夹
有一种方法可以删除所有节点和关系(如此处所述)
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
在 2.0.0 -M6 中,您可以执行以下 Cypher 脚本来删除所有节点和关系:
start n=node(*)
match (n)-[r?]-()
delete n,r
从版本 3 开始,我相信现在可以创建单独的数据库实例,因此它们的位置略有不同。
参考:https ://neo4j.com/developer/guide-import-csv/
--into retail.db 显然是目标数据库,它不能包含现有数据库。
在我的 Ubuntu 盒子上,位置位于:
/var/lib/neo4j/data/databases
我目前只看到graph.db
我认为必须是默认值的地方。
你可以删除你的数据文件,如果你想通过这种方式,我建议只删除你的graph.db,例如。否则,您将弄乱您的身份验证信息。
如果你有非常大的数据库,
`MATCH (n) DETACH DELETE n`
会花费很多时间,而且数据库可能会卡住(我尝试使用它,但不适用于非常大的数据库)。所以这就是我如何在 linux 服务器上删除一个更大的 Neo4j 数据库。
首先停止正在运行的 Neo4j 数据库。
sudo neo4j stop
其次,删除neo4j文件夹中data文件夹内的databases文件夹和transactions文件夹。那么在哪里可以找到neo4j文件夹呢?你可以通过执行找到neo4j的可执行路径。检查通过该路径的数据文件夹(它位于neo4j文件夹内)。进入数据文件夹,您将看到数据库和事务文件夹。
which neo4j
rm -rf databases/
rm -rf transactions/
重启 Neo4j 服务器
sudo neo4j start