postgresql - 从 Postgresql 中删除选定的表

标签 postgresql

我需要从 Postgres SQL 中删除选定的表。最好使用likewhere 子句。

就像我一样

TABLE_A
TABLE_B
TABLE_C
-
-
-
TABLE_N

我要删除

TABLE_A to TABLE_X

最佳答案

可以使用单个命令完成,速度更快 - 如果这是一项重复性任务。

如果不确定是否存在任何表,请添加IF EXISTS。通过这种方式,我们可以节省对系统目录(information_schema.tablespg_catalog.pg_tables)的额外访问。
您可能想要添加 CASCADE:

DO
$do$
BEGIN
  -- child safety device: quote RAISE instead of EXECUTE to prime the bomb
  -- EXECUTE (
  RAISE NOTICE '%', (
     SELECT 'DROP TABLE IF EXISTS'
         || string_agg('table_' || chr(ascii('a') + g) , ', ')
         || ' CASCADE;'
     FROM   generate_series(0,13) g
     );
END
$do$;

生成以下形式的命令:

DROP TABLE IF EXISTS table_a, table_b, ... , table_n CASCADE;

使用 generate_series() 生成请求的表名。更多信息:

关于postgresql - 从 Postgresql 中删除选定的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53531015/

相关文章:

PostgreSQL:将 UUID 转换为 OID

python - Psycopg2:将 CSV 数据复制到具有额外列值的表

postgresql - 在 Postgres 中使用可序列化事务级别的意外失败

postgresql - Apache Tomcat 连接到 PostgreSQL 数据库(通过 JDBC 驱动程序)

postgresql - PostgreSQL 外键约束中的意外值

python - Django/PostgreSQL 与 TextField object_id 字段的通用关系

sql - 每个 GROUP BY LIMIT SQL 查询

postgresql - 更改 Postgres 中 JSONB 列中值的类型

ios - 如何在 Swift 中执行 GET 和 POST 请求?

sql - psql onDelete : cascade not working 的 Sequelize