利用正则表达式与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_