【发布时间】:2011-05-28 18:21:15
【问题描述】:
是否可以像在 MySQL 中一样在图形数据库Neo4j 中创建/删除不同的数据库?或者,至少,如何删除现有图的所有节点和关系以获得干净的测试设置,例如,使用类似于 rmrel 或 rm 的 shell 命令?
【问题讨论】:
标签: database neo4j nodes sql-delete relationships
是否可以像在 MySQL 中一样在图形数据库Neo4j 中创建/删除不同的数据库?或者,至少,如何删除现有图的所有节点和关系以获得干净的测试设置,例如,使用类似于 rmrel 或 rm 的 shell 命令?
【问题讨论】:
标签: database neo4j nodes sql-delete relationships
您可以使用 rm -rf 删除整个图形目录,因为 Neo4j 不会存储除此之外的任何内容:
rm -rf data/*
此外,您当然可以遍历所有节点并删除它们的关系和节点本身,但这对于测试而言可能成本太高...
【讨论】:
rm data/graph.db
对于需要干净图表来运行测试套件的任何其他人 - https://github.com/jexp/neo4j-clean-remote-db-addon 是一个很好的扩展,允许通过 REST 调用清除数据库。显然,不要在生产中使用它!
【讨论】:
setRefenceNode() 调用(stackoverflow.com/questions/7186832/…)。
在不同的 neo4j 实例上运行您的测试代码。
conf/neo4j-server.properties 并将org.neo4j.server.webserver.port 设置为未使用的端口。./neo4j stop 和rm -rf data/graph.db。有关详细信息,请参阅neo4j: How to Switch Database? 和docs。
【讨论】:
在 2.0.0 -M6 中可以执行以下 Cypher 脚本来删除所有节点和关系:
start n=node(*)
match (n)-[r?]-()
delete n,r
【讨论】:
删除所有节点和关系的更简单命令:
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
【讨论】:
在 Neo4j 2.0.0 中?不再支持。改用 OPTIONAL MATCH:
START n=node(*)
OPTIONAL MATCH (n)-[r]-()
delete n,r;
【讨论】:
在 Neo4j 中创建新数据库
在启动 neo4j 社区之前点击浏览选项
然后选择一个不同的目录
然后点击开始按钮。
在该目录上创建新数据库
【讨论】:
快速而肮脏的方式,效果很好:
bin/neo4j stop
rm -rf data/
mkdir data
bin/neo4j start
【讨论】:
最简单的答案是:否
“重新开始”的最佳方式是
或
有一种方法可以删除所有节点和关系(如here 所述)
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
【讨论】:
你可以删除你的数据文件,如果你想通过这种方式,我建议只删除你的graph.db,例如。否则,您将弄乱您的身份验证信息。
【讨论】:
我们可以删除all nodes with relationships,
MATCH (n)
DETACH DELETE n
目前没有任何选项可以在 Noe4j 中创建多个数据库。您需要对 Neo4j 数据进行多次存储。见reference。
【讨论】:
从版本 3 开始,我相信现在可以创建单独的数据库实例,因此它们的位置略有不同。
参考:https://neo4j.com/developer/guide-import-csv/
--into retail.db 显然是目标数据库,它不能包含现有数据库。
在我的 Ubuntu 机器上,位置在:
/var/lib/neo4j/data/databases 我目前只看到graph.db,我认为它必须是默认值。
【讨论】:
如果你有非常大的数据库,
`MATCH (n) DETACH DELETE n`
会花费很多时间,并且数据库可能会卡住(我尝试使用它,但不适用于非常大的数据库)。所以这就是我在 linux 服务器上删除一个更大的 Neo4j 数据库的方法。
首先停止正在运行的 Neo4j 数据库。
sudo neo4j stop
其次,删除neo4j文件夹中data文件夹内的databases文件夹和transactions文件夹。那么在哪里可以找到 neo4j 文件夹?你可以通过执行which neo4j找到neo4j的可执行路径。检查通过该路径的 data 文件夹(它位于 neo4j 文件夹内)。进入 data 文件夹,您会看到 databases 和 transactions 文件夹。
rm -rf databases/rm -rf transactions/
重启 Neo4j 服务器
sudo neo4j start
【讨论】: