大佬教程收集整理的这篇文章主要介绍了postgresql 分区表 创建函数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
CREATEorreplaCEFUNCTIONpublic.partition_generate(tablenamevarchar,start_date varchar,END_DATE varchar,ptype varchar,pcolumn varchar)
RETURNS text
AS $$
importre
importdatetiR_209_11845@e
defudf_date_add(lstr,day):
s = datetiR_209_11845@e.datetiR_209_11845@e.strptime(lstr,"%Y%m%d")
s = s+datetiR_209_11845@e.timedelta(days=day)
returnstr(s).replace('-',0)">'')[0:8]
startdate=start_date
enddate=END_DATE
ifptypenotin('@H_776_146@mon',0)">'day'):
return"error:\tptypeonly support '@H_382_83@mon'、'day'"
ifptype=='day':
ifnotre.match('[0-9]{8}',startdatE):
"error:\tstartdateneed 20130101 format"
:rgb(4,enddatE):
try:
table_name = tablename.lower().split('.')[1]
table_scheR_209_11845@a = tablename.lower().split(0]
except(IndexError):
'error:\ttablenameneed "tablescheR_209_11845@a.table_name" format'
whileTrue:
#1)创建继承表
sql ="""create table """+table_scheR_209_11845@a+"""."""+table_name+"""_"""+startdate+""" (
check ( """+pcolumn+""" >= DATE '"""+udf_date_add(startdate,-1)+"""' AND """+pcolumn+""" < DATE '"""+startdate+"""' )
) inheritS ("""+table_scheR_209_11845@a+"""."""+table_name+""")"""
#plpy.info(sql)
try:
plpy.execute(sql)
except:
pass
#2)创建索引
sql ="""create index """+table_name+"""_"""+pcolumn+""" on """+table_scheR_209_11845@a+""" ("""+pcolumn+""")"""
pass
startdate=udf_date_add(startdate,1)
ifstartdate>enddate:
break
#2.0)创建错误表
sql ="""create table """+table_name+"""_error_"""+pcolumn+""" as SELEct * from """+table_name+""" limit 0
"""
try:
plpy.execute(sql)
except:
pass
#3)创建触发器函数
trigger_tmp=""
startdate=start_date
:
trigger_tmp=trigger_tmp+"""elsif(NEW."""+pcolumn+""">=DATE '"""+udf_date_add(startdate,-1)+"""' and NEW."""+pcolumn+""" < DATE '"""+startdate+"""' ) THEN
INSERT INTO """+table_name+"""_"""+startdate+""" VALUES (NEW.*);
"""
startdate=udf_date_add(startdate,255)">ifstartdate>udf_date_add(enddate,0)">365):
break
else
end if;
"""
sql = CREATE OR replaCE FUNCTION """+table_name+"""_insert_trigger()
RETURNS trigGER AS $PROC$ BEGIN """+trigger_tmp+""" RETURN NulL; END; LANGUAGEplpgsql """
plpy.execute(sql)
#4)创建触发器
sql = CREATE trigGER insert_"""+table_name+"""_trigger
BEFORE INSERT ON """+table_name+""" FOR EACH ROW EXECUTE PROCEDURE """+table_name+"""_insert_trigger() """
pass
"success"
$$ LANGUAGE plpythonu;
以上是大佬教程为你收集整理的postgresql 分区表 创建函数全部内容,希望文章能够帮你解决postgresql 分区表 创建函数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。