
postgresql
济海河神
这个作者很懒,什么都没留下…
展开
-
sql中对插删改操作进行跟踪记录,并返回影响的行数
思路是先创建个表进行必要的信息记录:create table if not exists Data_Trace (TableName Name not null,--引起触发器的表格名称User_name Name not null,Schema_name Name not null,Op_time timestamp,Op character,--操作类型代码XID int...原创 2019-07-23 17:56:59 · 364 阅读 · 0 评论 -
plpython3u+pgsql解析json
将之前的python代码部署在plpython3u上面,直接上代码吧,因为没有管理员权限,所以我就直接用表做操作了create or replace function get_json_by_python(origin_file text,layers int)returns void language plpython3uas $$import reimport json as ...原创 2019-09-16 10:28:48 · 434 阅读 · 0 评论 -
Java之JDBC
JDBC的工作流程:(图片来自:https://blog.youkuaiyun.com/caihuangshi/article/details/51265324)JDBC全称Java Database Connectivity 是一种可用于执行SQL语句的java接口,位于java.sql,javax.sql包下,主要工作流程其实上图已经说明:包括1.加载驱动程序;2.建立链接;3.向数据库发送SQL...原创 2019-09-04 11:00:07 · 142 阅读 · 0 评论 -
plpython:利用plpython3u优化DML(查删改)动态追踪(记录查删改的影响行数)
之前使用先将查删改的数据保存在临时表中,对于同批次(xid事务编号相同的,且DML类型相同的语句)sql语句进行比对,方便返回DML影响行数。其实影响行数的计算关键就是:每次行级触发器被触发时,能将这次的变化和上一次引起触发的行变换进行比对,若是同种变化(即DML类型相同,时间相同,xid相同),则影响行数+1,若不相同,则将这个DML单独记录下来。所以记录保存上一次的DML语句的信息是很关键的,...原创 2019-08-29 11:26:31 · 488 阅读 · 0 评论 -
pgsql实现对大数据多字段表格的异同点判断
为处理大数据量的表格,识别不同时间段对表格实现的更改,先将两张同结构表的不同数据记录提取出来,存为单独的结果表,方便后续的区别到底来自于那个字段的识别。create or replace function get_tables_differences(in schema_n_1 text,in schema_n_2 text,in table_n_1 text,in table_n_2 t...原创 2019-08-21 16:04:11 · 669 阅读 · 0 评论 -
pgsql识别两个同结构表的不同
平常的业务中,往往需要检查记录业务信息的表在不同时期发生变化的记录,从而针对更改的记录做出更好的决策。之前有用游标实现过两张同结构表的遍历对比,但针对上十万上百万的数据记录的表时,运行起来需要很长时间,并且会造成运行内存短时间占满的情况,现在采用except进行两表操作。代码如下:create or replace function get_tables_differences(in sc...原创 2019-08-15 12:39:00 · 668 阅读 · 0 评论 -
plpython3u与plpgsql实现追踪CREATE/ALTER/DROP操作,并记录表名与模式名
利用正则表达式与python优化了之前的追踪功能,代码如下:(利用python的list存储sql语句,能利用切片方便快捷的读取表名和模式名,加上将批量执行的sql语句存放在数组中,能实现识别批量的操作)get_CADquery()函数可实现将传入的initial_query(即执行成功地sql语句)以text数组的形式存放在query_array中,方便识别每一个DDL语句,并根据每一个DD...原创 2019-08-07 17:38:17 · 356 阅读 · 0 评论 -
pgsql获取两个同结构表的不同数据条,结果以表格输出
思路:声明两个游标遍历表格中的数据,然后进行交叉对比,为了定位不同的数据,在临时表中新增一列row_n作为标记(默认值为1),如果数据不同,则更新row_n值为2。create or replace function get_two_tables_difference(in schem_n_1 text,in schem_n_2 text,in table_n_1 text,in tabl...原创 2019-08-07 17:25:46 · 1540 阅读 · 0 评论 -
pgsql与plpythonu实现批量部署触发器
先编写函数将pg_tables中的所建表信息读取成数组(即读取数据库下所有模式下的所有表)create or replace function get_array(in query_content text,in query_table text)returns text[]language plpgsqlas $$declare test text[]; i int =1;...原创 2019-07-25 15:39:36 · 407 阅读 · 0 评论 -
postgresql 中创建事件触发器,追踪记录新建、替换、删除表格等信息
先创建一个表格用来记录跟踪信息:create table "temp".create_drop_alter_ddl_audit( c_key bigserial primary key,--行号id c_time timestamp, -- 触发时间 c_user varchar(64), -- 触发用户 c_txn varchar(16), -...原创 2019-07-17 13:38:14 · 1638 阅读 · 0 评论 -
sql中事件触发器跟踪记录ALTER/DROP/CREATE表的操作,适用于各类sql语句,包括批量执行sql语句
先获取alter/drop/create的表名和模式名create or replace function public.get_tablen_scheman(in _Qry_1 text,in op_type text)returns VOIDLANGUAGE plpgsqlas $$declare table_n text;schema_n text;--_Qry_2 t...原创 2019-07-23 18:01:07 · 435 阅读 · 0 评论 -
批量从mongodb里解json
create or replace function get_json_by_python(origin_file text,layers int,schema_n text,table_n text)returns void language plpython3uas $$import reimport json as jsimport ast#plpy.execute("tru...原创 2019-09-18 17:37:13 · 273 阅读 · 0 评论