gpt4 book ai didi

db2-luw - 有没有一种有效的方法可以从数据库中删除每个 View /函数/表/sp?

转载 作者:行者123 更新时间:2023-12-02 10:25:12 27 4
gpt4 key购买 nike

在 DB2 联合数据库(基于远程服务器和昵称)中,我需要清理模型并从另一个数据库重新创建它。我需要删除除服务器和昵称之外的所有数据库对象。

我知道如何从 SYSCAT 架构中检索对象列表。现在我需要在每个上运行 DROP 语句。显然,依赖关系会妨碍。

强力方法是循环运行 DROP,直到全部成功,但根据顺序(幸运与否),可能需要很长时间。

您是否知道一种有效排序 DROP 语句的方法,以使删除的总时间尽可能短?

预计不会有完美的解决方案。一个相当聪明的解决方案就足够了。

谢谢

最佳答案

您可能想查看每个表的引用(您可以根据 http://www.ibm.com/developerworks/data/library/techarticle/dm-0401melnyk/ 使用 syscat.references 来完成此操作)并自己构建依赖关系树(应该是可行的,例如使用临时表(如果您仅限于 sql)。然后你就可以从那棵树的底部掉下来。

所以,基本上,我对你的问题的回答是,为了快速完成,只需在删除之前根据它们之间的引用对表进行排序。由于不应存在任何依赖循环,因此您应该始终能够选择一个未引用的表。放下它并重复。

您可能还希望看到这个(类似?)问题:DB2 cascade delete command?如果您想先删除数据。

如有错误,请指正。这个答案是基于我使用其他数据库的经验,因此它可能不完全适合 DB2。虽然它应该有效;)

关于db2-luw - 有没有一种有效的方法可以从数据库中删除每个 View /函数/表/sp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6014919/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com