Database 如何重置/清除/删除neo4j数据库?

Database 如何重置/清除/删除neo4j数据库?,database,neo4j,cypher,Database,Neo4j,Cypher,我们可以通过以下查询删除所有节点和关系 MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r 但是新创建的节点的内部id为({last node internal id}+1)。它不会重置为零 我们如何重置neo4j数据库,例如新创建的节点将获得id为0 从2.3中,我们可以删除所有具有关系的节点 MATCH (n) DETACH DELETE n 关闭Neo4j服务器,执行rm-rf data/graph.db并再次启动服务器。此过程会完全擦除您的数

我们可以通过以下查询删除所有节点和关系

MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r
但是新创建的节点的内部id为({last node internal id}+1)。它不会重置为零

我们如何重置neo4j数据库,例如新创建的节点将获得id为0

从2.3中,我们可以删除所有具有关系的节点

MATCH (n)
DETACH DELETE n

关闭Neo4j服务器,执行
rm-rf data/graph.db
并再次启动服务器。此过程会完全擦除您的数据,因此请小心处理。

如果您在docker容器上使用它,您可以这样做


docker compose rm-f-s-v myNeo4jService

由于neo4j只运行conf文件中指定的当前数据库,因此启动新的干净数据库的简单方法是更改neo4j.conf文件中的当前数据库,然后重新启动neo4j服务器

dbms.active_database=graph.db --> dbms.active_database=graph2.db
有些人可能认为数据库名称已更改。但在撰写本文[2018-12]时,neo4j不支持多个数据库实例。我们不需要区分数据库,因此我们的代码中不使用数据库的名称。

运行这两个命令

match (a) -[r] -> () delete a, r
上述命令将删除所有具有关系的节点。 然后跑,

match (a) delete a

它将删除没有关系的节点。

处理多个数据库

根据:

最后一个管理差异是如何完全清除一个数据库,而不影响具有多个数据库的整个实例。在处理单实例和单数据库方法时,用户可以删除整个实例并重新开始。但是,对于多个数据库,我们无法做到这一点,除非我们能够轻松地从该实例中的其他数据库中丢失所有内容。 这种方法与其他DBMS类似,我们可以删除并重新创建数据库,但保留所有其他内容。Cypher的命令是创建或替换数据库。这将创建数据库(如果它不存在)或用干净的数据库替换现有数据库

启动neo4j时,可以访问两个数据库,一个是
系统
数据库,另一个是默认的(
neo4j
)数据库。要清除/重置neo4j数据库,请执行以下操作:

:use system
1-切换到
系统
数据库:

:use system
2-显示使用实例创建的所有数据库:

SHOW DATABASES
3-运行命令以清除数据库

CREATE OR REPLACE DATABASE <name>
创建或替换数据库

此命令删除所有内容,但需要安装apoc:


调用apoc.periodic.iterate('MATCH(n)RETURN n','DETACH DELETE n',{batchSize:1000})

根据我的经验,有两种方法可以重置Neo4j数据库,具体取决于您需要什么

方法1:只需删除所有节点/关系/索引/约束 在Neo4j浏览器中,或在Py2neo中使用
graph.run()
()

然而,尽管方便,但这种方法不适用于使用命令
neo4j-admin.bat import
进行批量导入的情况,也就是说,它非常适合一次快速导入数百万个节点

方法2:为批量导入工具重置数据库 当数据库不为空时不可能打开。我尝试了上述方法,但仍然收到错误:

Import error: C:\Users\[username]\AppData\Local\Neo4j\Relate\Data\dbmss\dbms-dd16c384-78c5-4c21-94f3-b0e63e6c4e06\data\databases\neo4j already contains data, cannot do import here
Caused by:C:\Users\[username]\AppData\Local\Neo4j\Relate\Data\dbmss\dbms-dd16c384-78c5-4c21-94f3-b0e63e6c4e06\data\databases\neo4j already contains data, cannot do import here
java.lang.IllegalStateException: C:\Users\[username]\AppData\Local\Neo4j\Relate\Data\dbmss\dbms-dd16c384-78c5-4c21-94f3-b0e63e6c4e06\data\databases\neo4j already contains data, cannot do import here
为了解决此问题,我删除了以下文件夹:

c:\Users\[username]\AppData\Local\Neo4j\Relate\Data\dbmss\dbms-dd16c384-78c5-4c21-94f3-b0e63e6c4e06\data\databases\neo4j

然后执行导入命令:

"C:\Users\[username]\AppData\Local\Neo4j\Relate\Data\dbmss\dbms-dd16c384-78c5-4c21-94f3-b0e63e6c4e06\bin\neo4j-admin.bat" import --database=neo4j --multiline-fields=true --nodes=node_ABC.csv --nodes=node_XYZ.csv relationships=relationship_LMN.csv --relationships=relationship_UIO.csv
启动Neo4j数据库。在Neo4j桌面中,现在应该可以识别标签和关系


请注意,我删除的数据库(neo4j)和我导入的数据库是相同的。

由于neo4j 2.3,您可以交替使用
MATCH(n)DETACH DELETE n
MATCH(n)DETACH DELETE n
当有多个节点时会失败:
内存不足,无法执行当前任务。请尝试在neo4j配置中增加“dbms.memory.heap.max_size”(通常在“conf/neo4j.conf”中,或者,如果您使用的是neo4j桌面,可以通过用户界面找到),或者如果您正在运行嵌入式安装,请使用“-Xmx”命令行标志增加堆,然后重新启动数据库
我相信Neo4j 3.0中的文件结构已更改,现在所有数据文件都位于根数据库目录下,而不是数据文件夹中。现在我要做的是“rm-rf databaseFolder/*”删除文件夹中的所有内容。显然,首先应该停止服务器。Neo4j 3.0是支持多个数据库的第一步-目前,Neo4j安装可以承载多个graphdb,但仅限于同时运行其中一个。要在3.0中删除db,请执行以下操作:
rm-rf data/databases/graph.db
(对于名为
graph.db
)的默认db。请注意,在使用自制的macOS上,此文件位于系统文件夹中,例如/usr/local/cillar/neo4j/3.1.1/libexec/data/databasesOn ubuntu 18.04此文件夹位于neo4j 3的
/var/lib/neo4j/data/databases/graph.db
中。5@StefanArmbruster无法使用neo4j 4.0+提出您的建议。因此,我找到了一个解决方法,并在下面给出了另一个建议。如果您正在为数据库使用外部卷装载,则不会。如果没有,则只需重新启动docker容器就会导致一个新状态。@cricket_007您能详细说明一下“重新启动”吗?删除和启动docker容器不会清除外部卷装入的数据库。。我只是想澄清一下答案。这个答案的问题是,它不适用于社区版本。否则,这是一个好主意suggestion@EnriqueOrtu尼诺社区版对我来说很有效!然而,有一个问题是,如果我尝试两次以上,它会破坏我的数据库。我打算在Github中报告这一问题。社区版本对我来说也不走运,文档表明它只是企业版:这不会删除我们为节点创建的属性。即使删除了所有节点和关系,我仍然可以看到属性仍然可用。有没有办法,我们也可以删除这些属性
"C:\Users\[username]\AppData\Local\Neo4j\Relate\Data\dbmss\dbms-dd16c384-78c5-4c21-94f3-b0e63e6c4e06\bin\neo4j-admin.bat" import --database=neo4j --multiline-fields=true --nodes=node_ABC.csv --nodes=node_XYZ.csv relationships=relationship_LMN.csv --relationships=relationship_UIO.csv