postgres 如何通过命令删除模式中的所有表

asa*_*gam 15 postgresql postgresql-9.4

我使用 postgresql,我需要删除模式中存在的所有表。如何从命令提示符中删除。

Phi*_*lᵀᴹ 21

您想使用 的CASCADE选项DROP SCHEMA。从文档

CASCADE - 自动删除包含在架构中的对象(表、函数等),进而删除依赖于这些对象的所有对象

小心 - 重点高于我的。

显然,您之后需要重新创建架构。

要删除当前架构中的所有表,您可以使用以下脚本:

DO $$ DECLARE
    tabname RECORD;
BEGIN
    FOR tabname IN (SELECT tablename 
                    FROM pg_tables 
                    WHERE schemaname = current_schema()) 
LOOP
    EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(tabname.tablename) || ' CASCADE';
END LOOP;
END $$;
Run Code Online (Sandbox Code Playgroud)

WHERE schemaname = current_schema()如果要删除不同架构中的所有表,请更改。

  • “第 2 行”?1号线有什么? (3认同)

小智 7

yourdb=# DROP SCHEMA *schema_name* CASCADE;
Run Code Online (Sandbox Code Playgroud)

(工作,刚刚用 Postgresql 9.6.3 测试,可能不适用于以前的版本)