如何在Neo4j中删除/创建数据库?


104

是否可以像在MySQL中一样在图数据库Neo4j中创建/删除不同的数据库?或者,至少,如何删除现有图形的所有节点和关系以获得干净的测试设置,例如,使用类似于rmrel或的shell命令rm

Answers:


98

您可以使用删除整个图形目录rm -rf,因为Neo4j不会在该目录之外存储任何内容:

rm -rf data/*

此外,您当然可以遍历所有节点并删除它们之间的关系以及节点本身,但这对于测试来说可能太昂贵了……


7
而且,如果您遍历所有节点,则最好保留参考节点。
nawroth,2010年

6
图目录位于哪里?
普拉莫德

3
@Pramod将其放在neo4j目录的数据目录中。您不能错过它
devshorts

7
在带有自制软件的MacOSX上:/usr/local/Cellar/neo4j/community-1.9.2-unix/libexec/data
Ashley

5
在执行此命令之前,最好停止neo4j服务器。
约翰·巴希尔

98

删除所有节点和关系的更简单命令:

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

11
为语句+1。但是请注意,仅因为删除了所有节点,并不意味着您使用的标签已被完全忘记。浏览器仍将显示所有标签。节点属性和关系标签的同上。
Dilum Ranatunga 2014年

@DilumRanatunga 1.您知道如何使Neo忘记标签吗?2.如果删除了节点或删除了关系的关系标签,那么如何保留节点属性?
John Bachir 2014年

1
我的意思不是实际值;我的意思是属性本身。
Dilum Ranatunga 2014年

5
在数据库中不仅可能存在节点和边,而且还存在索引,而要摆脱这些节点和边难度就更大。同样,我只是通过大量的重复测试(包括删除)设法破坏了数据库实例,并且看起来物理上删除了数据库文件,并让Neo4J在重新启动时重新创建它们可以明显改善性能。

我在Docker容器中的neo4j上内存不足。
bolec_kolec


47

在Neo4j中创建新数据库

在启动neo4j社区之前,单击浏览选项

在此处输入图片说明

然后选择其他目录

在此处输入图片说明

在此处输入图片说明

然后单击开始按钮。

在此处输入图片说明

在该目录上创建的新数据库


12

快速而肮脏的方式可以正常工作:

bin/neo4j stop
rm -rf data/
mkdir data
bin/neo4j start

11

对于需要清洁图形来运行测试套件的其他任何人-https: //github.com/jexp/neo4j-clean-remote-db-addon是一个很好的扩展,允许通过REST调用清除数据库。但是,显然,不要在生产中使用它!


似乎删除了节点0。如何重新创建它?
2012年

1
实际上,它会跳过参考节点(github.com/jexp/neo4j-clean-remote-db-addon/blob/master/src/…)。但是,如果您的参考节点不存在(并且您需要),则需要从一个干净的数据目录开始,因为还没有setRefenceNode()调用(stackoverflow.com/questions/7186832/…)。
Matt Luongo 2012年

7

在另一个neo4j实例上运行测试代码。

  1. 将您的neo4j目录复制到新位置。使用它进行测试。cd进入新目录。
  2. 更改端口,以便您可以运行测试并正常同时使用它。要将端口更改为开放conf/neo4j-server.properties并将其设置org.neo4j.server.webserver.port为未使用的端口。
  3. 安装时启动测试服务器。做./neo4j stoprm -rf data/graph.db拆解。

有关更多详细信息,请参见neo4j:如何切换数据库?docs


6

在Neo4j 2.0.0中,不再受支持。改用OPTIONAL MATCH:

START n=node(*)
OPTIONAL MATCH (n)-[r]-()
delete n,r;

6

最简单的答案是:

最好的“重新开始”方法是

  • 移到另一个空数据文件夹

要么

  • 完全关闭Neo4j
  • 清空旧数据文件夹
  • 重新启动Neo4j并将空文件夹设置为数据文件夹

有一种方法来删除所有节点和关系(如描述这里

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

1

在2.0.0 -M6中,可以执行以下Cypher脚本删除所有节点和关系:

start n=node(*)
match (n)-[r?]-()
delete n,r

2
不幸的是,这在最新的2.0.0版本中产生了一个错误:SyntaxException:问号不再用于可选模式-而是使用OPTIONAL MATCH(第1行,第26列)==>“ start n = node(*)match(n )-[r?]-()delete n,r“
richj 2014年

我不理解否决票,因为答案在2.0.0 -M6中清楚地说明了,这是我回答问题时的最新版本,而其他版本为当前最新版本提供了正确答案。
马丁·塞勒

1

从版本3开始,我相信现在可以创建单独的数据库实例,因此它们的位置略有不同。

参考:https : //neo4j.com/developer/guide-import-csv/

--into retail.db显然是目标数据库,该数据库不能包含现有数据库。

在我的Ubuntu盒子上,该位置在:

/var/lib/neo4j/data/databases我目前只能看到graph.db我认为必须是默认值的地方。


0

您可以删除数据文件,如果要通过这种方式,我建议例如仅删除graph.db。否则,您将弄乱您的身份验证信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.