-- 一、现有函数
-- 1、现有函数调用
select "ap"."delete_analysis_backup"('ap');
-- 2、函数内容
CREATE OR REPLACE FUNCTION "ap"."delete_analysis_backup"("schema_name" varchar)
  RETURNS "pg_catalog"."void" AS $BODY$ DECLARE
    row_tag VARCHAR ( 200 );
BEGIN-- Created by Liu Jinhui
    FOR row_tag IN (
        SELECT TABLE_NAME
        FROM
            (
            SELECT
                tablename AS TABLE_NAME,
                ( regexp_match ( tablename, 'analysis_[a-z,_]+_([0-9]{8,8})' ) ) [ 1 ] AS table_backup_time
            FROM
                pg_tables
            WHERE
                schemaname = schema_name
                AND tablename SIMILAR TO 'analysis_[a-z,_]+_[0-9]{8,12}'
            ) A
        WHERE
            DATE_TRUNC( 'day', to_date( A.table_backup_time, 'yyyyMMdd' ) ) < DATE_TRUNC( 'day', now( ) + '-7 day' )
        )
        LOOP
        RAISE notice'表名为:%',
        row_tag;
    EXECUTE concat ( 'drop table ', SCHEMA_NAME, '.', row_tag );

END LOOP;

END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100
-- 二、依赖项
-- 要求:删除ods包含gyy的表,删除一个月
-- 函数头:del_special_struct(schema_name,period_saved,remark)
-- 调用:
select ods.del_special_struct('ap','1 days','删除以往的分析对象模型')
select ods.del_special_struct('ods','31 days','删除一个月之前的gyy物理备份表')

-- 三、过程
-- 要求:删除ods包含gyy的表,删除一个月
-- 函数头:del_special_struct(schema_name,period_saved,remark)
-- 调用:
select ods.del_special_struct('ap','1 days','删除以往的分析对象模型');
select ods.del_special_struct('ods','31 days','删除一个月之前的gyy物理备份表');
-- 1、ap
CREATE OR REPLACE FUNCTION ods.del_special_struct(schema_name varchar,period_saved varchar,remark varchar)
  RETURNS "pg_catalog"."void" AS $BODY$ DECLARE
BEGIN
    if schema_name = 'ap' then
        EXECUTE select "ap"."delete_analysis_backup"('ap');
    else
        -- gyy删除一个月前的表
    end if;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100

-- 2、ods的管易云删除逻辑
-- (1)查询出所有满足条件的表
select tablename,to_char(date(concat('20',split_part(tablename,'_20',2))),'yyyymmdd') as mon_day
from pg_tables
where schemaname = 'ods'
and tablename SIMILAR TO 'ods_trade_[a-z,_]+gyy_[2022][0-9,_]+'
and to_char(date(concat('20',split_part(tablename,'_20',2))),'yyyymmdd') < to_char(date_trunc('day',now())+'-30 days','yyyymmdd')
-- (2)删除表

CREATE OR REPLACE FUNCTION ods.del_special_struct(schema_name varchar,period_saved varchar,remark varchar)
  RETURNS "pg_catalog"."void" AS $BODY$ DECLARE
    DECLARE arrat_t varchar[];
    DECLARE dt_split INTERVAL='-' ||period_saved;
    DECLARE tb_each VARCHAR;
    DECLARE res VARCHAR;
  BEGIN
        if schema_name = 'ap' then
            select ap.delete_analysis_backup('ap') into res;
        else
            -- gyy删除一个月前的表
            -- 如果存在分区表,则删除对应的物理表
            select array(
                select tablename from (
                    select tablename,to_char(date(concat('20',split_part(tablename,'_20',2))),'yyyymmdd') as mon_day
                    from pg_tables
                    where schemaname = 'ods'
                    and tablename SIMILAR TO 'ods_trade_[a-z,_]+gyy_[2022][0-9,_]+'
                    and to_char(date(concat('202',split_part(tablename,'_202',2))),'yyyymmdd') < to_char(date_trunc('day',now())+dt_split,'yyyymmdd')
                ) all_table) into arrat_t;
            foreach tb_each in array arrat_t
            loop
                EXECUTE format('DROP TABLE IF EXISTS %s.%s', schema_name,tb_each);
            end loop;
        end if;
  END
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

postgresql函数:满足特定格式的表及指定日期前的删除的更多相关文章

  1. postgresql 函数 参数为复合类型

    postgresql没有存储过程,但是函数功能很强大. 在近期开发的电商管理平台中,对于产品的类目管理,设计时有个属性字段,设为字符数组,但是EF不支持数组的操作,所以在添加和修改类目时,需要对属性的 ...

  2. PostgreSQL EXPLAIN执行计划学习--多表连接几种Join方式比较

    转了一部分.稍后再修改. 三种多表Join的算法: 一. NESTED LOOP: 对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择.在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表 ...

  3. 第四十二节,configparser特定格式的ini配置文件模块

    configparser用于处理特定格式的文件,其本质上是利用open来操作文件. 特定格式的ini配置文件模块,用于处理ini配置文件,注意:这个ini配置文件,只是ini文件名称的文本文件,不是后 ...

  4. strncmp函数——比较特定长度的字符串

    strncmp函数用于比较特定长度的字符串. 头文件:string.h. 语法  int strncmp(const char *string1, const char *string2, size_ ...

  5. Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)

    应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...

  6. PostgreSQL自学笔记:6 PostgreSQL函数

    6 PostgreSQL函数 6.2 数学函数 abs(x) 绝对值 pi() 圆周率π select abs(-3),pi(); cookie: MySQL中的pi()默认值3.141593, Po ...

  7. PostgreSQL函数(存储过程)----笔记

    PostgreSQL 函数也称为 PostgreSQL 存储过程. PostgreSQL 函数或存储过程是存储在数据库服务器上并可以使用SQL界面调用的一组SQL和过程语句(声明,分配,循环,控制流程 ...

  8. PostgreSQL函数如何返回数据集 [转]

    PostgreSQL函数如何返回数据集 以下主要介绍PostgreSQL函数/存储过程返回数据集,或者也叫结果集的示例. 背景: PostgreSQL里面没有存储过程,只有函数,其他数据库里的这两个对 ...

  9. Txt格式配置表无法解析的问题——BOM

    今天再次遇到同一个问题:策划给来一个Txt格式配置表,我用解析类去读取,返回的结果为空.解析类参数是:主键key,文件名fileName,错误提示errorTip. 写读取语句的时候,主键key我是直 ...

  10. 第八十八天请假 PHP smarty模板 变量调节器,方法和块函数基本书写格式

    变量调节器 : 文件命名格式(modifier.名称.php)  前端调用方式<{变量|名称:参数:参数……}>可组合使用,用|隔开 <?php /* 命名格式 smarty_mod ...

随机推荐

  1. 使用containerlab搭建cilium BGP环境解析

    使用 Containerlab + Kind 快速部署 Cilium BGP 环境一文中使用Containerlab和Cilium实现了模拟环境下的Cilium BGP网络.它使用Containerl ...

  2. 【项目实战】Kaggle电影评论情感分析

    前言 这几天持续摆烂了几天,原因是我自己对于Kaggle电影评论情感分析的这个赛题敲出来的代码无论如何没办法运行,其中数据变换的维度我无法把握好,所以总是在函数中传错数据.今天痛定思痛,重新写了一遍代 ...

  3. service服务使用CoreDNS提供的域名地址访问

    普通的 Service:会生成 servicename.namespace.svc.cluster.local 的域名,会解析到 Service 对应的 ClusterIP 上,在 Pod 之间的调用 ...

  4. Shell分析日志文件

    文章转载自:https://mp.weixin.qq.com/s/o63aIM2p9rc2OjhxiC6wgA 1.查看有多少个IP访问: awk '{print $1}' log_file|sort ...

  5. 举例:Network Policies

    本文描述了如何在 Kubernetes 集群中通过创建 NetworkPolicy 的方式来声明网络策略,以管理 Pod 之间的网络通信流量. 前提条件 创建一个Deployment并配置Servic ...

  6. Ceph 存储集群 - 搭建存储集群---教程走到osd激活这一步执行不下去了,报错

    目录 一.准备机器 [1. 修改主机名](所有节点)(https://www.cnblogs.com/zengzhihua/p/9829472.html#1-修改主机名) [2. 修改hosts文件] ...

  7. Docker/K8s 解决容器内时区不一致方案

    转载自:https://cloud.tencent.com/developer/article/1433215 1.背景介绍 我们知道,使用 docker 容器启动服务后,如果使用默认 Centos ...

  8. PAT (Basic Level) Practice 1028 人口普查 分数 20

    某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 200 岁的老人,而今天是 2014 ...

  9. 分布式存储系统之Ceph集群部署

    前文我们了解了Ceph的基础架构和相关组件的介绍,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16720234.html:今天我们来部署一个ceph集群: 部 ...

  10. Python实验报告(第四周

    一.实验目的和要求 学会应用列表.元组.字典等序列: 二.实验环境 软件版本:Python 3.10 64_bit 三.实验过程 1.实例1:输出每日一贴 (1)在IDLE中创建一个名称为tips.p ...