码迷,mamicode.com
首页 > 数据库 > 详细

Greenplum(PostgreSql)函数实现批量删除表

时间:2019-09-24 10:23:00      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:sel   arch   --   current   拼接   测试环境   生产环境   表示   cascade   

  项目做库迁移,前期需要经常调整表结构语句,涉及多次的批量drop,本着偷懒精神写了这个函数。鉴于本函数在生产环境有巨大风险,建议测试完毕后立即删除。

  主要步骤很简单:1)从pg_tables查询得到相关表名称;2)遍历查询结果拼接动态语句然后循环执行。

代码:

  

create or replace function vppp.func_drop_tables() returns void as $body$ -- 注意schema名称
declare
    tmp varchar(512); -- 存放拼接文本
    stmp record; -- 记录类型可用于保存查询结果
    i int; -- 计数

begin
    i := 1;
    for stmp in (select tablename table_nam from pg_tables where tableowner = vppp and schemaname=vppp) loop -- 这里vppp也是schema,默认和owner相同
    
    tmp := drop table vppp. || stmt.bale_nam || cascade;; --cascade表示级联删除
    raise notice currentTable is : % ------%, stmt.table_nam, i; -- 打印一下信息,当前表名称和序号。
    
    if stmt.table_nam <> A_T_Test  -- 我的库里有一个测试用的表,删除动作跳过。
        then raise notice drop______;
    -- execute tmp; -- 执行删除动作我这里注释掉,需要时再打开。
    end if;

    i := i+1;
end;
$body$
    language plpgsql volatile

 

代码是手打,本机也没有测试环境,如果有拼写错误请仔细检查一下。

Greenplum(PostgreSql)函数实现批量删除表

标签:sel   arch   --   current   拼接   测试环境   生产环境   表示   cascade   

原文地址:https://www.cnblogs.com/lbhqq/p/11576715.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!