项目做库迁移,前期需要经常调整表结构语句,涉及多次的批量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)函数实现批量删除表的更多相关文章

  1. postgresql批量删除表

    CREATE FUNCTION del_ora_table() RETURNS void AS $$ DECLARE tmp ); DECLARE names CURSOR FOR select ta ...

  2. 在SSMS里批量删除表、存储过程等各种对象

    在SSMS里批量删除表.存储过程等各种对象 以前想找批量删除表或者存储过程的方法,原来SSMS的GUI界面也可以完成 请看下图,因为这次出差的时候要删除所有的存储过程,然后重建这些存储过程 而表.函数 ...

  3. 利用sql批量删除表,存储过程

    利用sql批量删除表,存储过程. 最近用godaddy的空间,由于系统里面的表多,一个个的删除很麻烦,就网上搜集了一下解决方法. 给大家分享一下: 1.批量删除存储过程 declare @procNa ...

  4. sqlserver批量删除表

    --批量删除表 ) DECLARE tmpCur CURSOR FOR SELECT name FROM sys.objects WHERE TYPE='U' AND name LIKE N'%_Qu ...

  5. oracle 批量删除表数据的4种方式

      1.情景展示 情景一: 删除PRIMARY_INDEX_TEST表中,MINDEX_ID字段为空的数据 情景二: 删除VIRTUAL_CARD_TEST表中的脏数据 2.解决方案 情景一的解决方案 ...

  6. SQL 批量删除表

    /*-------------------------------- 功能说明: 批量DropTable 使用说明: 使用时一定要小心,因为删选表的where条件是like所有必须保证where 后的 ...

  7. MSSQL sql server 2005/2008 row_number()函数应用之–删除表中重复记录,只保留一条不重复数据

    转自:http://www.maomao365.com/?p=4942 下文主要讲述:重复数据只获取一条的方法 row_number函数在数据库中的功能是为每一行 按照一定的规则生成一个编号,我们常常 ...

  8. SQL Server 批量 删除表索引

    当旧的数据库中的数据几乎很少使用到的时候,索引又占用着较大的磁盘空间,数据又不能删除,又想节省磁盘空间. 这个时候可以将所有表的索引进行删除了(先创建索引备份脚本,以备需要还原),可以批量一起删除. ...

  9. 在 sql server 中批量删除表

    通过查询系统表,可以批量获得 drop 语句,执行即可... select 'drop table '+name+';' from sys.tables

随机推荐

  1. apue第4章习题

    4.1 用 stat 函数替换图 4-3 程序中的 lstat函数,如若命令行残数之一是符号链接,会发生什么变化? stat不支持链接,如果有参数是链接符号,会显示链接后的文件属性. 4.2 如果文件 ...

  2. BulkLoad加载本地文件到HBase表

    BulkLoad加载文件到HBase表 1.功能 将本地数据导入到HBase中 2.原理 BulkLoad会将tsv/csv格式的文件编程hfile文件,然后再进行数据的导入,这样可以避免大量数据导入 ...

  3. docker仓库管理(9)

    使用公共 Registry Docker Hub 是 Docker 公司维护的公共 Registry.用户可以将自己的镜像保存到 Docker Hub 免费的 repository 中.如果不希望别人 ...

  4. [7.18NOIP模拟测试5]砍树 题解(数论分块)

    题面(加密) 又考没学的姿势……不带这么玩的…… 考场上打了个模拟 骗到30分滚粗了 稍加思考(滑稽)可将题面转化为: 求一个最大的$d$,使得 $\sum \limits _{i=1}^n {(\l ...

  5. 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集

    机器学习 数据挖掘 数据集划分 训练集 验证集 测试集 Q:如何将数据集划分为测试数据集和训练数据集? A:three ways: 1.像sklearn一样,提供一个将数据集切分成训练集和测试集的函数 ...

  6. PAT_A1139#First Contact

    Source: PAT A1139 First Contact (30 分) Description: Unlike in nowadays, the way that boys and girls ...

  7. ArabellaCPC 2019

    链接:http://codeforces.com/gym/102263 A: 签到题:A * B . B: 题意:类似取石子游戏,每个人可以取max(1, n(当前剩余) - k)个,最后取完的人赢, ...

  8. 专题:『systemd』

    [COMMAND] Systemd Daemons: systemd networkd journald logind "user session" Systemd units: ...

  9. Netty 相关目录

    Netty 相关目录 Netty 源码学习--客户端流程分析 Netty 源码学习--服务端流程分析 Netty 源码分析--ChannelPipeline Netty 源码学习--EventLoop ...

  10. hbase启动的时候报:cat: /home/hadoop/hbase-0.94.6-cdh4.5.0/target/cached_classpath.txt: 没有那个文件或目录

    启动hbase的时候: -cdh4.5.0/bin$ hbase shell cat: /home/hadoop/hbase--cdh4.5.0/target/cached_classpath.txt ...