postgresql函数:满足特定格式的表及指定日期前的删除
-- 一、现有函数
-- 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函数:满足特定格式的表及指定日期前的删除的更多相关文章
- postgresql 函数 参数为复合类型
postgresql没有存储过程,但是函数功能很强大. 在近期开发的电商管理平台中,对于产品的类目管理,设计时有个属性字段,设为字符数组,但是EF不支持数组的操作,所以在添加和修改类目时,需要对属性的 ...
- PostgreSQL EXPLAIN执行计划学习--多表连接几种Join方式比较
转了一部分.稍后再修改. 三种多表Join的算法: 一. NESTED LOOP: 对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择.在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表 ...
- 第四十二节,configparser特定格式的ini配置文件模块
configparser用于处理特定格式的文件,其本质上是利用open来操作文件. 特定格式的ini配置文件模块,用于处理ini配置文件,注意:这个ini配置文件,只是ini文件名称的文本文件,不是后 ...
- strncmp函数——比较特定长度的字符串
strncmp函数用于比较特定长度的字符串. 头文件:string.h. 语法 int strncmp(const char *string1, const char *string2, size_ ...
- Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)
应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...
- PostgreSQL自学笔记:6 PostgreSQL函数
6 PostgreSQL函数 6.2 数学函数 abs(x) 绝对值 pi() 圆周率π select abs(-3),pi(); cookie: MySQL中的pi()默认值3.141593, Po ...
- PostgreSQL函数(存储过程)----笔记
PostgreSQL 函数也称为 PostgreSQL 存储过程. PostgreSQL 函数或存储过程是存储在数据库服务器上并可以使用SQL界面调用的一组SQL和过程语句(声明,分配,循环,控制流程 ...
- PostgreSQL函数如何返回数据集 [转]
PostgreSQL函数如何返回数据集 以下主要介绍PostgreSQL函数/存储过程返回数据集,或者也叫结果集的示例. 背景: PostgreSQL里面没有存储过程,只有函数,其他数据库里的这两个对 ...
- Txt格式配置表无法解析的问题——BOM
今天再次遇到同一个问题:策划给来一个Txt格式配置表,我用解析类去读取,返回的结果为空.解析类参数是:主键key,文件名fileName,错误提示errorTip. 写读取语句的时候,主键key我是直 ...
- 第八十八天请假 PHP smarty模板 变量调节器,方法和块函数基本书写格式
变量调节器 : 文件命名格式(modifier.名称.php) 前端调用方式<{变量|名称:参数:参数……}>可组合使用,用|隔开 <?php /* 命名格式 smarty_mod ...
随机推荐
- IEEE浮点数向偶数舍
CSAPP 向偶数舍入初看上去好像是个相当随意的目标--有什么理由偏向取偶数呢?为什么不始终把位于两个可表示的值中间的值都向上舍入呢?使用这种方法的一个问题就是很容易假想到这样的情景:这种方法舍入 ...
- 在 Kubernetes 容器集群,微服务项目最佳实践
转载自:https://mp.weixin.qq.com/s/WYu3gDwKKf06f_FYbO9YRg 本文主要介绍我个人在使用 Kubernetes 的过程中,总结出的一套「Kubernetes ...
- [算法2-数组与字符串的查找与匹配] (.NET源码学习)
[算法2-数组与字符串的查找与匹配] (.NET源码学习) 关键词:1. 数组查找(算法) 2. 字符串查找(算法) 3. C#中的String(源码) 4. 特性Attribute 与内 ...
- aardio + PowerShell 可视化快速开发独立 EXE 桌面程序
aardio 可以方便地调用 PowerShell ,PowerShell 中也可以自由调用 aardio 对象与函数.不用带上体积很大的System.Management.Automation.dl ...
- nsis插件nsisSlideshow.dll更新
更新至1.7版本,作者wiz0u已解决关于ie9的兼容问题.Good 下载地址: http://wiz0u.free.fr/prog/nsisSlideshow/latest.php
- WPF开发经验-WPF的TextBox控件的MouseDown事件不响应的解决方法
一 问题的发现 最近项目有个需求,大概是,当点击某个TextBox时,先执行一些业务上的逻辑处理. 于是按以往思维,将TextBox的MouseDown事件关联事件处理方法,将业务处理写在方法里. 调 ...
- 用深度强化学习玩FlappyBird
摘要:学习玩游戏一直是当今AI研究的热门话题之一.使用博弈论/搜索算法来解决这些问题需要特别地进行周密的特性定义,使得其扩展性不强.使用深度学习算法训练的卷积神经网络模型(CNN)自提出以来在图像处理 ...
- PHP全栈开发(七):PHP与MySQL存储交互(2.插入、读取)
<?php $servername = "localhost"; $username = "root"; $password = "beijin ...
- STM32的SPI口的DMA读写[原创www.cnblogs.com/helesheng]
SPI是我最常用的接口之一,连接管脚仅为4根:在常见的芯片间通信方式中,速度远优于UART.I2C等其他接口.STM32的SPI口的同步时钟最快可到PCLK的二分之一,单个字节或字的通信时间都在us以 ...
- python解释器下载及注意事项
python解释器 python解释器下载 python解释器下载官网:https://www.python.org/downloads/windows/ 目前比较常用的python版本有python ...