【分享&备忘录】Postgresql/pgsql 根据规则,批量联级删除多张表

来源:Chatgpt

测试调试:我

先上SQL语句如下:
联级删除单表

sql 复制代码
DROP TABLE IF EXISTS 表名 CASCADE

批量删除整张表

sql 复制代码
DO $$ 
DECLARE 
    current_table_name text;
BEGIN
    -- 获取所有以 'bgd_' 开头的表名
    FOR current_table_name IN 
        SELECT table_name 
        FROM information_schema.tables 
        WHERE table_name LIKE 'bgd\_%' ESCAPE '\'
    LOOP
        -- 构建并执行删除表的语句
        EXECUTE 'DELETE FROM ' || current_table_name || ' CASCADE';
    END LOOP;
END $$;

批量删除表数据

sql 复制代码
DO $$ 
DECLARE 
    current_table_name text;
BEGIN
    -- 获取所有以 'bgd_' 开头的表名
    FOR current_table_name IN 
        SELECT table_name 
        FROM information_schema.tables 
        WHERE table_name LIKE 'bgd\_%' ESCAPE '\'
    LOOP
        -- 构建并执行删除表的语句
        EXECUTE 'DROP TABLE IF EXISTS ' || current_table_name || ' CASCADE';
    END LOOP;
END $$;

使用注意事项:

  1. 这个 SQL 脚本使用了 PL/pgSQL 语法,通过查询 information_schema.tables 获取所有以 'bgd_' 开头的表名,并使用 FOR 循环和 EXECUTE 动态执行联级删除语句。
  2. 这里使用的是 DROP TABLE 语句是会删除整张表, DELETE FROM则是清空表的数据
  3. 请确保在执行之前备份重要数据,并谨慎使用这样的操作。
  4. 可以根据表名进行匹配和查询,比如我这边的需求就是删除获取所有以 'bgd_' 开头的表名
相关推荐
Bat U5 分钟前
MySQL数据库|建库&建表&数据类型
数据库·mysql
短剑重铸之日9 分钟前
《ShardingSphere解读》16 改写引擎:如何理解装饰器模式下的 SQL 改写实现机制?
java·数据库·后端·sql·shardingsphere·分库分表·装饰器模式
m0_5879589510 分钟前
机器学习与人工智能
jvm·数据库·python
2501_9083298513 分钟前
Python入门:从零到一的第一个程序
jvm·数据库·python
Liu6288824 分钟前
Web开发与API
jvm·数据库·python
m0_7434703727 分钟前
Python字典与集合:高效数据管理的艺术
jvm·数据库·python
2501_9454235428 分钟前
使用Scrapy框架构建分布式爬虫
jvm·数据库·python
yhole30 分钟前
MySQL无法连接到本地localhost的解决办法2024.11.8
数据库·mysql·adb
2401_8512729932 分钟前
使用Python进行量化交易入门
jvm·数据库·python
jinanmichael35 分钟前
mysql用户名怎么看
数据库·mysql