类GraphDatabaseService
似乎不提供任何方法来删除/清除数据库。有没有其他方法可以用Java删除/清除当前的嵌入式数据库?如何用java删除neo4j嵌入式数据库?
回答
只需执行GraphDatabaseService.shutdown(),并在返回后,删除数据库文件(使用代码如this)。
您也可以使用getAllNodes()遍历所有节点,删除它们的关系和节点本身。也许避免删除参考节点。
如果您的用例正在测试,那么您可以使用ImpermanentGraphDatabase,这将在关机后删除数据库。
要使用ImpermanentGraphDatabase将neo4j-kernel测试jar/dependency添加到您的项目中。查找名称以“tests.jar”结尾的文件on maven central。
我觉得最简单的方法是用neo4j数据库删除一个目录。我在运行所有测试后,在我的junit测试中执行此操作。这是一个功能我用其中文件是Neo4j的目录:
public static void deleteFileOrDirectory(final File file) {
if (file.exists()) {
if (file.isDirectory()) {
for (File child : file.listFiles()) {
deleteFileOrDirectory(child);
}
}
file.delete();
}
}
我想我发现它Neo4j的维基。我在this discussion中发现了另一个解决方案。您可以使用Blueprint API,它提供了清晰的方法。
像nawroth说,测试你应该使用ImpermanentGraphDatabase。它几乎可以自动修复所有问题。
如果你没有测试,真的有两种方法。我通常有两种方法可供我使用。一个是clearDB方法,其中我递归删除数据库路径。我用的是fileutils中的库这一点,这几乎是一个单一的代码行:
FileUtils.deleteRecursively(new File(DB_PATH));
另一种是删除数据库中除了参考节点的每个节点,使用removeAllNodes方法。有这个简单的查询,您执行这样的:
engine.execute("START n = node(*), ref = node(0) WHERE n<>ref DELETE n");
需要注意的是,你必须在你创建一个新的EmbeddedGraphDatabase对象调用clearDB方法。 removeAllNodes方法在创建此对象后调用。
有一个辅助类
Neo4jHelper.cleanDb(db);
(它来自org.springframework.data.neo4j.support.node.Neo4jHelper和您引用的DB是一个GraphDatabaseService)
您也有能够转储它:
Neo4jHelper.dumpDb();
- 1. 插入,删除(快速)blob嵌入式java数据库
- 2. Java:嵌入式数据库
- 3. 如何用Java导入嵌入式Neo4J中的GraphML DB?
- 4. Java嵌入式数据库持久性
- 5. 带嵌入式数据库的Java EE
- 6. 嵌入式nosql开源java数据库
- 7. 如何使用Python将嵌入式Neo4j图形数据库转换为GraphML?
- 8. 如何通过java使用neo4j来重置neo4j数据库?
- 9. 何时使用嵌入式数据库
- 10. Neo4j嵌入式数据库忽略事务日志限制
- 11. Neo4j OGM连接到现有的嵌入式数据库
- 12. 将Java嵌入式数据库转换为独立数据库
- 13. 如何导入数据库(档案)neo4j
- 14. 如何判断Neo4j嵌入式数据库是否为新创建
- 15. Java和Firebird嵌入式如何创建数据库?
- 16. 如何在嵌入模式下创建Java数据库
- 17. 如何删除数据库
- 18. Delphi嵌入式数据库
- 19. 嵌入式Firebird数据库
- 20. Neo4j其余调用使用Java(不在嵌入式模式)
- 21. 如何使用嵌入式JavaDB数据库部署Java Swing应用程序?
- 22. PowerBI嵌入 - 无法删除数据集
- 23. Neo4j在嵌入式Java中的高可用性模式下
- 24. Java嵌入式数据库(java db/derby)连接管理
- 25. Spring + Hibernate + H2嵌入式数据库。数据如何保存?
- 26. 处理CSV文件中使用的嵌入式Java数据库
- 27. 如何用嵌入式数据库H2创建jar文件?
- 28. 如何用我的嵌入式数据库填充我的JTable?
- 29. 如何在实体框架中使用嵌入式数据库?
- 30. 如何在C#中使用Firebird创建嵌入式数据库#
除删除文件之外还有其他办法吗? – zbdiablo 2011-03-17 10:26:20
请参阅http://wiki.neo4j.org/content/Testing_with_Neo4j#Use_the_ImpermanentGraphDatabase – DNA 2011-12-02 09:24:29