如何使用java删除neo4j嵌入式数据库?

如何使用java删除neo4j嵌入式数据库?,neo4j,Neo4j,类GraphDatabaseService似乎没有提供任何删除/清除数据库的方法。是否有其他方法可以使用Java删除/清除当前的嵌入式数据库?只需执行一个命令,在它返回后,删除数据库文件(使用类似的代码) 您还可以使用来迭代所有节点,删除它们的关系和节点本身。可能会避免删除引用节点 如果您的用例正在测试,那么您可以使用,它将在关闭后删除数据库 要使用无常GraphDatabase,请将neo4j内核测试jar/依赖项添加到项目中。查找名称以“tests.jar”结尾的文件。我认为最简单的方法是使

GraphDatabaseService
似乎没有提供任何删除/清除数据库的方法。是否有其他方法可以使用Java删除/清除当前的嵌入式数据库?

只需执行一个命令,在它返回后,删除数据库文件(使用类似的代码)

您还可以使用来迭代所有节点,删除它们的关系和节点本身。可能会避免删除引用节点

如果您的用例正在测试,那么您可以使用,它将在关闭后删除数据库


要使用无常GraphDatabase,请将neo4j内核测试jar/依赖项添加到项目中。查找名称以“tests.jar”结尾的文件。

我认为最简单的方法是使用neo4j数据库删除目录。在运行所有测试之后,我在junit测试中执行此操作。下面是我使用的一个函数,其中file是neo4j目录:

public static void deleteFileOrDirectory( final File file ) {
    if ( file.exists() ) {
        if ( file.isDirectory() ) {
            for ( File child : file.listFiles() ) {
                deleteFileOrDirectory( child );
            }
        }
        file.delete();
    }
}

我想我是在neo4j维基上找到的。我找到了另一种解决办法。您可以使用,它提供了清晰的方法。

如nawroth所说,对于测试,您应该使用无常图形数据库。它几乎可以自动修复你所有的问题

如果你没有测试,有两种方法。我通常有两种方法。一种是clearDB方法,在该方法中,我递归地删除DB路径。为此,我使用FileUtils库,它几乎是一行代码:

FileUtils.deleteRecursively(new File(DB_PATH));
另一种方法是使用removeAllNodes方法删除数据库中除引用节点之外的所有节点。有一个简单的查询,您可以这样执行:

engine.execute("START n = node(*), ref = node(0)  WHERE n<>ref DELETE n");
engine.execute(“START n=node(*),ref=node(0),其中nref DELETE n”);

需要注意的重要一点是,在创建新的EmbeddedGraphDatabase对象之前,必须调用clearDB方法。创建此对象后,将调用removeAllNodes方法。

有一个帮助器类

Neo4jHelper.cleanDb(db);
(它来自org.springframework.data.neo4j.support.node.Neo4jHelper,您引用的数据库是GraphDatabaseService)

您还可以转储它:

Neo4jHelper.dumpDb();

除了删除文件,还有其他方法吗?请参阅