2015-11-05 268 views
1

我知道很多類似的問題已經被問到。但似乎這些答案無法解決我的問題。我有一個非常大的圖,大約有100萬個節點和300萬個關係。當我嘗試使用以下語句刪除它們時:如何刪除neo4j中的所有節點和所有關係

MATCH (n) 
OPTIONAL MATCH (n)-[r]-() 
DELETE n,r 

然後服務器崩潰。 OK,我加LIMIT:

MATCH (n) 
OPTIONAL MATCH (n)-[r]-() 
WITH n,r LIMIT 1000000 
DELETE n,r 

服務器將不會崩潰,但異常顯示出來:

org.neo4j.kernel.api.exceptions.TransactionFailureException: Node record Node[1578965,used=false,rel=662269,prop=-1,labels=Inline(0x0:[]),light] still has relationships 

我猜LIMIT百萬將停止我的關係刪除。然後它轉向刪除節點。這會導致該異常。我對嗎?因爲我不太瞭解LIMIT 1000000的過程。

那我該怎麼辦?每次我需要清除我的圖時,我都不想刪除數據庫文件。設置更大的內存空間可能會有所幫助,但我的圖形大小也可能會變大。事故最終會發生。


感謝您的回覆。我嘗試了你的方法。例外「Neo.DatabaseError.Statement.ExecutionFailure」將在第二次露面我跑了聲明:

MATCH (n) 
WITH n LIMIT 1000000 
DETACH DELETE n 

或本聲明:

MATCH()-[r]-() 
WITH r 
LIMIT 1000000 
DELETE r 

我放棄了。我想我最好刪除我的文件夾中的所有文件。這對我來說很簡單。

+0

您是否嘗試減小批量大小,即限制? – Luanne

回答

3

你可以做的是先刪除關係,然後刪除關係。

關係

MATCH()-[r]-() 
WITH r 
LIMIT 1000000 
DELETE r 

節點

MATCH (n) 
WITH n 
LIMIT 1000000 
DELETE n 
5

在Neo4j的2.3,你可以使用

MATCH (n) 
WITH n LIMIT 1000000 
DETACH DELETE n 

否則,您可以嘗試通過節點限制(僅好,如果每個單獨的節點不有很多關係):

MATCH (n) 
WITH n LIMIT 1000000 
OPTIONAL MATCH (n)-[r]-() 
DELETE n,r 
相關問題