注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

通过 FUNCTION 创建大量子表  

2010-12-24 14:54:33|  分类: Postgres基础 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


       在PG里,用到分区表的时候需要创建大量的子表,今天有个项目,有个分区表已经很大了,
一个月的数据有300G左右,目前这张分区表是以月分区,现在需要将它改为以日分区了, 下面
是通过创建一个 FUNCTION  来创建日表。

--create paranet table
CREATE TABLE tbl_tmp (
    id bigint DEFAULT nextval('public.tbl_tmp_id_seq'::regclass),
    host character varying(50),
    remoteip character varying(50),
    ntime timestamp without time zone,
    reqdesc character varying(2000),
    httpcode character varying(10),
    clength integer,
    refer character varying(2000),
    agent character varying(50),
    hsman character varying,
    hstype character varying(50),
    imsi character varying(50)
);

--function
CREATE OR REPLACE FUNCTION skytf.create_table()
 RETURNS void
 LANGUAGE plpgsql
AS $function$
declare

v_date      char(8);
v_tablename  varchar(64);

begin
 
for i in 0..1500 loop

v_date      :=to_char(current_date + i,'YYYYMMDD');
v_tablename := 'tbl_tmp_' || v_date;

execute  'create table ' || v_tablename || ' (like tbl_tmp including constraints including indexes including defaults) inherits (tbl_tmp)';
execute  'grant select on skytf.' || v_tablename || ' to dwetl';

end loop;
end
$function$;

   说明,上面function有一段是 'grant...' ,这段代码在创建表的同时也把权限给加上。

--Execute function
skytf=> select create_table();

 

--查看,表已创建
skytf=> \d
                        List of relations
 Schema  |               Name                |   Type   |  Owner 
---------+-----------------------------------+----------+---------
 skytf | tbl_tmp_201012             | table    | skytf
 skytf | tbl_tmp_20101224           | table    | skytf
 skytf | tbl_tmp_20101225           | table    | skytf
 skytf | tbl_tmp_20101226           | table    | skytf
 skytf | tbl_tmp_20101227           | table    | skytf
 skytf | tbl_tmp_20101228           | table    | skytf
 skytf | tbl_tmp_20101229           | table    | skytf
 skytf | tbl_tmp_20101230           | table    | skytf

..

.. 

     以上省略了大部分输出结果。

  评论这张
 
阅读(25776)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016