根据我的经验,有两种方法可以重置 Neo4j 数据库,具体取决于您的需要。
方法一:简单删除所有节点/关系/索引/约束
在 Neo4j 浏览器中,或在 Py2neo 中使用graph.run() (link)。
# All nodes and relationships.
MATCH (n) DETACH DELETE n
# All indexes and constraints.
CALL apoc.schema.assert({},{},true) YIELD label, key RETURN *
然而,尽管方便,但这种方法不适合使用命令 neo4j-admin.bat import 进行 BULK 导入的情况,即非常适合一次快速导入数百万个节点。
方法 2:为 BULK Import Tool 重置数据库
当数据库非空时,不能BULK import。上面的方法我试过了,还是报错:
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\data\transactions\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 Desktop 中,现在应该可以识别标签和关系。
注意我删除的数据库(neo4j)和我导入的数据库是一样的。