postgresql中,并没有分区表的创建命令,是通过创建继承表及约束等规则来创建,步骤繁琐且麻烦,邮件中封装了一个方法。便于创建分区表
规范:
postgresql中 时间分区字段请统一采用 timestamp(0) 类型
一、原始表 tbl_partition
create table tbl_partition (
id integer,
name varchar(20),
gender boolean,
yyyymmdd timestamp(0),
dept char(4)
);
二、将普通表转换为分区表(public.partition_generate)
select public.partition_generate('public.tbl_partition','20130101','20130103','day','yyyymmdd');
参数说明:
- 表名 schema.tablename 格式
- 创建分区的起始时间
- 创建分区的结束时间
- 分区类型 day:天分区 mon:月分区
- 分区字段
三、创建结果(其中一个是错误表,用于存放不能映射的分区)
四、验证数据
五、源码
CREATE or REPLACE FUNCTION public.partition_generate(tablename varchar,start_date varchar,end_date varchar,ptype varchar,pcolumn varchar)
RETURNS text
AS $$
import re
import datetime