gpt4 book ai didi

postgresql - 如何删除以常用词开头的 psql(PostgreSQL 交互式终端)中的所有表?

转载 作者:行者123 更新时间:2023-11-29 11:52:49 30 4
gpt4 key购买 nike

如何删除名称以 doors_ 开头的所有表?我可以使用 drop table 命令执行某种正则表达式吗?

我不喜欢编写自定义脚本,但欢迎所有解决方案。谢谢!

最佳答案

此脚本将生成 DDL 命令以将它们全部删除:

SELECT 'DROP TABLE ' || t.oid::regclass || ';'
FROM pg_class t
-- JOIN pg_namespace n ON n.oid = t.relnamespace -- to select by schema
WHERE t.relkind = 'r'
AND t.relname ~~ E'doors\_%' -- enter search term for table here
-- AND n.nspname ~~ '%myschema%' -- optionally select by schema(s), too
ORDER BY 1;

转换 t.oid::regclass 使得语法也适用于混合大小写标识符、保留字或表名中的特殊字符。它还可以防止 SQL 注入(inject)并在必要时在模式名称前添加。更多关于 object identifier types in the manual .

About the schema search path.

您也可以自动删除,但是在您删除之前不检查您实际删除的内容是不明智的

您可以附加 CASCADE对每个 DROP 依赖对象( View 和引用外键)的语句。但是,再次重申,这不明智,除非您非常清楚自己在做什么。外键约束没有什么大的损失,但这也会完全丢弃所有依赖 View 。如果没有 CASCADE,您会收到错误消息,通知您哪些对象阻止您删除表。然后你就可以处理它了。

关于postgresql - 如何删除以常用词开头的 psql(PostgreSQL 交互式终端)中的所有表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9715273/

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