PostgreSQL怎么创建分区表详解


Posted in PostgreSQL onJune 25, 2022

前言

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.验证数据是否插入成功

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

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

PostgreSQL怎么创建分区表详解

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

PostgreSQL怎么创建分区表详解

范围分区表

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');

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

PostgreSQL怎么创建分区表详解

 4.验证数据是否正确

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

PostgreSQL怎么创建分区表详解

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

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

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

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

赠送内容:

我们再对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);

总结

到此这篇关于PostgreSQL怎么创建分区表的文章就介绍到这了,更多相关PostgreSQL创建分区表内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

PostgreSQL 相关文章推荐
PostgreSQL存储过程实用脚本(二):创建函数入门
Apr 05 PostgreSQL
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
Apr 22 PostgreSQL
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
May 21 PostgreSQL
postgresql使用filter进行多维度聚合的解决方法
Jul 16 PostgreSQL
关于PostgreSQL JSONB的匹配和交集问题
Sep 14 PostgreSQL
PostgreSQL13基于流复制搭建后备服务器的方法
Jan 18 PostgreSQL
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
Jan 18 PostgreSQL
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
Apr 12 PostgreSQL
postgreSQL数据库基础知识介绍
Apr 12 PostgreSQL
PostgreSQL逻辑复制解密原理解析
Sep 23 PostgreSQL
postgresql之greenplum字符串去重拼接方式
May 08 PostgreSQL
PostgreSQL出现死锁该如何解决
PostgreSQL基于pgrouting的路径规划处理方法
Apr 18 #PostgreSQL
postgreSQL数据库基础知识介绍
PostgreSQL数据库去除重复数据和运算符的基本查询操作
PostgreSQL聚合函数介绍以及分组和排序
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
PostgreSQL数据库创建并使用视图以及子查询
You might like
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
PHP文件操作实现代码分享
2011/09/01 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
PHP fprintf()函数用法讲解
2019/02/16 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
jquery提升性能最佳实践小结
2010/12/06 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
[51:22]Fnatic vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python动态加载模块的3种方法
2014/11/22 Python
python集合用法实例分析
2015/05/30 Python
浅谈python数据类型及类型转换
2017/12/18 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
TensorFlow加载模型时出错的解决方式
2020/02/06 Python
python生成并处理uuid的实现方式
2020/03/03 Python
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
学年末自我鉴定
2014/01/21 职场文书
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
花坛标语大全
2014/06/30 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
辞职信标准格式
2015/02/27 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书
解决Python字典查找报Keyerror的问题
2021/05/26 Python
java解析XML详解
2021/07/09 Java/Android