​​PostgreSQL怎么创建分区表详解!

​​PostgreSQL怎么创建分区表详解!

 

u1460018586621419257fm253fmtautoapp138fJPEG

 

前言pg 假如我们想像hive那也创建动态分区是不能实现的。 那么需要我们手动通过脚本来创建分区表,创建分区表必须要创建主表和分区表。因此我们可以根据我们需求提前用脚本把分区表生成即可,也可以用

 

前言

pg 假如我们想像hive那也创建动态分区是不能实现的。

        那么需要我们手动通过脚本来创建分区表,创建分区表必须要创建主表和分区表。

因此我们可以根据我们需求提前用脚本把分区表生成即可,也可以用触发器来实现。

主表:定义我们的一些约束,以及分区键,实质上不存储数据

分区表:主要是用来存储数据的。所有列及约束都跟随主表

注意:如果我们指定分区表不存在会报错,因此一定要提前创建好分区表,并且要数据不能有遗漏的分区键。

 

列分区表

就是我们指定数据库中字段的一列作为分区字段。

1.如下创建分区表的主表 关键字【partition by list】

create table fenqu(

id int,

date varchar

) partition by list(date)

 

 

2.创建分区表并指定主表:

 

create table fenqu_20210805 partition of fenqu for values in ('2021-08-05');

create table fenqu_20210806 partition of fenqu for values in ('2021-08-06');

 

 

3.插入数据

 

insert into fenqu values(1,'2021-08-05');

insert into fenqu values(2,'2021-08-05');

insert into fenqu values(3,'2021-08-05');

insert into fenqu values(4,'2021-08-05');

insert into fenqu values(5,'2021-08-06');

insert into fenqu values(6,'2021-08-06');

insert into fenqu values(7,'2021-08-06');

insert into fenqu values(8,'2021-08-06');

 

 

4.验证数据是否插入成功

我们插入的是主表,但是我们可以通过分表来查询。

第一种如上用分区表的形式查询。

006fRELkly4h3mzdmk13nj30in08v74h

第二种 我们通过指定查询条件为我们的分区列

006fRELkly4h3mzdmo7stj30qu0b2t8z

 

范围分区表

1.创建访问分区表的主表 关键字【partition by range】

 

create table fenqu2(

id int,

date varchar

) partition by range(date)

 

 

 

2.创建分区表并指定主表

 

create table fenqu_20210805_10 partition of fenqu2 for values from ('2021-08-05') to ('2021-08-10');

create table fenqu_20210810_15 partition of fenqu2 for values from ('2021-08-10') to ('2021-08-15');

 

 

注意:一定要他两个范围是左闭右开(包含左边,不包含右边)所以两个分区衔接一定要紧密。

3.插入数据

 

insert into fenqu2 values(1,'2021-08-05');

insert into fenqu2 values(2,'2021-08-06');

insert into fenqu2 values(3,'2021-08-07');

insert into fenqu2 values(4,'2021-08-09');

insert into fenqu2 values(5,'2021-08-10');

insert into fenqu2 values(6,'2021-08-11');

insert into fenqu2 values(7,'2021-08-12');

insert into fenqu2 values(8,'2021-08-13');

insert into fenqu2 values(9,'2021-08-14');

insert into fenqu2 values(10,'2021-08-15');

 

会报错如下错误:因为左闭右开,

006fRELkly4h3mzdmtzmdj30ln04o3yi

4.验证数据是否正确

我们使用查询分区表的形式查询:

006fRELkly4h3mzdmlze6j30m508paaa

结果正确,数据已经进入到我们指定的分区。

其实最核心的使我们分区键的选择可以根据数据量来决定颗粒度,

一般我们数据量比较大的时候我们就按照天,小时(这种可以使用列分区表)。

数据量小我们可以按照季,月,周来实现分区(可以使用范围分区表)当然当我们列中有季,月,周也可以使用列分区

赠送内容:

我们再对pg进行更新插入时需要对标设置联合主键

 

alter table log.voice_query_answer_log add constraint

"voice_query_answer_log_pkey" primary key (log_date,log_timestamp,request_id,device_sn);

 

 

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

电商数据分析360°实战攻略!

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需99元,即可下载本站文章涉及的文件和软件。

文章版权声明 1、本网站名称:Excelbook
2、本站永久网址:http://www.excelbook.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长王小琥进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

THE END
分享
二维码
< <上一篇
下一篇>>