zoukankan      html  css  js  c++  java
  • Greenplum(PostgreSql)函数实现批量删除表

      项目做库迁移,前期需要经常调整表结构语句,涉及多次的批量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

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

  • 相关阅读:
    shell 工具函数
    javascript 笔记
    vmware 全屏状态下与宿主机无缝切换
    shell 重定向
    PHP 执行服务器命令的类
    PHP 生成 Html
    PHP 打印输出调试类
    PHP 自动加载类
    getopt 示例
    linux alias 命令别名并输出其原始命令
  • 原文地址:https://www.cnblogs.com/lbhqq/p/11576715.html
Copyright © 2011-2022 走看看