2015-11-05 1224 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 
相关问题