那天分表的时候建错了,应该是按天分表,结果搞错需求搞成按小时分表了……但是表建完了,删除如果逐条删除会很麻烦,所以就需要根据表名模糊查找,之后批量删除。代码如下:
DO $$
DECLARE
d varchar(128);
BEGIN
FOR d IN select 'drop table '||schemaname||'.'||tablename||';' from pg_tables where schemaname||'.'||tablename like '%public.t_audit_2019%'
loop
EXECUTE d;
END LOOP;
END;
$$
简单来说就是根据表名模糊查找得到一个结果集,然后根据结果集进行循环执行drop语句。