如何删除postgres中特定模式中的每个表?

Gol*_*ver 2 sql postgresql drop-table database-schema

如何删除特定架构中的所有表?只应删除架构中的表。我已经有了用下面的代码获取的所有表名,但是如何删除所有这些表?

下面是一些psycopg2代码,下面是生成的SQL

writeCon.execute("SELECT table_name FROM information_schema.tables WHERE table_schema='mySchema'")
Run Code Online (Sandbox Code Playgroud)

SELECT table_name FROM information_schema.tables WHERE table_schema='mySchema'

Jim*_*nes 6

你可以使用一个anonymous code block

注意:我们正在处理DROP TABLE语句,如果你犯了错误,它们真的很刻薄;) 该CASCADE选项也会删除依赖对象。小心使用!

DO $$
DECLARE
  row record;
BEGIN
    FOR row IN SELECT * FROM pg_tables WHERE schemaname = 'mySchema' 
    LOOP
      EXECUTE 'DROP TABLE mySchema.' || quote_ident(row.tablename) || ' CASCADE';
    END LOOP;
END;
$$;
Run Code Online (Sandbox Code Playgroud)

如果您想删除架构中的所有内容,包括包装器、序列等,请考虑删除架构本身并重新创建它:

DROP SCHEMA mySchema CASCADE;
CREATE SCHEMA mySchema;
Run Code Online (Sandbox Code Playgroud)