加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在PostgreSQL中使用通配符删除多个表

发布时间:2020-12-13 16:51:04 所属栏目:百科 来源:网络整理
导读:使用分区时,通常需要一次删除所有分区。 然而 DROP TABLE tablename* 不工作。 (通配符不受尊重)。 有一个优雅的(阅读:易于记住的)方式删除多个表在一个命令与通配符? 使用逗号分隔列表: DROP TABLE foo,bar,baz; 如果你真的需要一个脚爪,这一个会做它
使用分区时,通常需要一次删除所有分区。

然而

DROP TABLE tablename*

不工作。 (通配符不受尊重)。

有一个优雅的(阅读:易于记住的)方式删除多个表在一个命令与通配符?

使用逗号分隔列表:
DROP TABLE foo,bar,baz;

如果你真的需要一个脚爪,这一个会做它的工作:

CREATE OR REPLACE FUNCTION footgun(IN _schema TEXT,IN _parttionbase TEXT) 
RETURNS void 
LANGUAGE plpgsql
AS
$$
DECLARE
    row     record;
BEGIN
    FOR row IN 
        SELECT
            table_schema,table_name
        FROM
            information_schema.tables
        WHERE
            table_type = 'BASE TABLE'
        AND
            table_schema = _schema
        AND
            table_name ILIKE (_parttionbase || '%')
    LOOP
        EXECUTE 'DROP TABLE ' || quote_ident(row.table_schema) || '.' || quote_ident(row.table_name);
        RAISE INFO 'Dropped table: %',quote_ident(row.table_schema) || '.' || quote_ident(row.table_name);
    END LOOP;
END;
$$;

SELECT footgun('public','tablename');

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读