2011-03-17 41 views

回答

6

只需執行GraphDatabaseService.shutdown(),並在返回後,刪除數據庫文件(使用代碼如this)。

您也可以使用getAllNodes()遍歷所有節點,刪除它們的關係和節點本身。也許避免刪除參考節點。

如果您的用例正在測試,那麼您可以使用ImpermanentGraphDatabase,這將在關機後刪除數據庫。

要使用ImpermanentGraphDatabase將neo4j-kernel測試jar/dependency添加到您的項目中。查找名稱以「tests.jar」結尾的文件on maven central

+0

除刪除文件之外還有其他辦法嗎? – zbdiablo 2011-03-17 10:26:20

+0

請參閱http://wiki.neo4j.org/content/Testing_with_Neo4j#Use_the_ImpermanentGraphDatabase – DNA 2011-12-02 09:24:29

1

我覺得最簡單的方法是用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,它提供了清晰的方法。

1

像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方法在創建此對象後調用。

0

有一個輔助類

Neo4jHelper.cleanDb(db); 

(它來自org.springframework.data.neo4j.support.node.Neo4jHelper和您引用的DB是一個GraphDatabaseService)

您也有能夠轉儲它:

Neo4jHelper.dumpDb(); 
相關問題