如何在OrientDB服务器上删除所有顶点类?
批量删除OrientDB中所有顶点类的方法
Gremlin 实现(优先推荐)
你已经通过 g.V().drop() 删除了所有顶点实例,接下来可以借助OrientDB底层API批量获取并删除自定义顶点类(排除内置的V类):
// 获取所有继承自V的自定义顶点类 def vertexClasses = g.getGraph().getRawGraph().getMetadata().getSchema().getClasses().findAll { it.isSubClassOf("V") && it.name() != "V" } // 遍历删除每个顶点类 vertexClasses.each { g.getGraph().getRawGraph().getMetadata().getSchema().dropClass(it.name()) } // 提交事务完成操作 g.tx().commit()
注意事项:
- 必须确保目标类下无剩余顶点实例,否则删除操作会失败
- 该代码可在Gremlin控制台或通过Gremlin客户端执行
SQL 实现
如果更习惯用SQL操作,可通过系统表OClass查询所有顶点类,再执行批量删除脚本:
- 先查询确认要删除的顶点类:
SELECT name FROM OClass WHERE superClass.name = 'V' AND name != 'V'
- 执行批量删除脚本:
EXECUTE SCRIPT BEGIN FOR (SELECT name FROM OClass WHERE superClass.name = 'V' AND name != 'V') AS cls LET dropCmd = "DROP CLASS " + cls.name EXECUTE dropCmd END
注意事项:
EXECUTE SCRIPT需要足够的数据库权限- 同样要保证类下无顶点实例,否则会抛出实例存在的错误
内容的提问来源于stack exchange,提问作者Zach
相关产品推荐
相关产品推荐

