plpython3u与plpgsql实现追踪CREATE/ALTER/DROP操作,并记录表名与模式名

这篇博客介绍了如何利用正则表达式和Python优化数据库中的追踪功能,专注于CREATE/ALTER/DROP操作。通过get_CADquery()函数,将SQL语句分解并存储在query_array中,然后get_tablen_scheman()函数根据点号或'exists'关键字来提取表名和模式名。主要目标是高效识别DDL语句并记录相关信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用正则表达式与python优化了之前的追踪功能,代码如下:(利用python的list存储sql语句,能利用切片方便快捷的读取表名和模式名,加上将批量执行的sql语句存放在数组中,能实现识别批量的操作)

get_CADquery()函数可实现将传入的initial_query(即执行成功地sql语句)以text数组的形式存放在query_array中,方便识别每一个DDL语句,并根据每一个DDL语句识别出表名和模式名。

create or replace function public.get_CADquery(in initial_query text)
returns text[]
language plpgsql
as $$
declare n int=0;
		query_array text[];
		i int =1;
begin
	if position(';'in initial_query)<>0 and 
	substring(initial_query,length(initial_query),length(initial_query))<>';'then
	initial_query=initial_query||';';
	end if;
	n=min(position(';'in initial_query));
	if n<>0 then
		while n<>0 loop
			query_array=array_append(query_array,substring(initial_query,1,n));
			initial_query=trim(substring(initial_query,n+1,length(initial_query)));
			n=min(position(';'in initial_query));
		end loop;
	else
		query_array=array_append(query_array,initial_query);
	end if;
	return query_array;
end;
$$;

函数get_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值