当前位置: 首页 > news >正文

二百八十五、华为云PostgreSQL——建分区表并设置主键

一、目的

在PostgreSQL里建表,设置主键,三个字段确认数据的唯一性。设置分区字段,按月分区

二、PostgreSQL版本

三、PostgreSQL 9.2.4 版本缺点

在 PostgreSQL 9.2.4 中,虽然你可以创建分区表,但需要注意的是,该版本中的分区功能并不像后续版本那样成熟和灵活。
特别是,它不支持直接使用复合主键进行分区,而且分区键通常必须是表中的一个实际字段(尽管可以通过表达式索引等方式进行变通,但这种方法在 9.2.4 中可能不受支持或不够直观)。

四、建库建表

4.1 建库

create schema if not exists etc_dwd;

4.2 建表

4.2.1 建表逻辑

以traffic_id、pay_type和pay_year做主键,以pay_year分做分区
traffic_id,vehicle_id,member_detail_id,pay_year,pay_month字段为varchar;
bill_type,pay_type,pay_channel_id,pay_amount字段类型为int;
bill_created_at,pay_at字段类型为timestamp;
pay_day字段类型为date

注意点

1、主键必须包含分区字段

2、PostgreSQL日期类型有限

4.2.2 建表SQL

create table etc_dwd.traffic_payment (traffic_id       int8,vehicle_id       int8,member_detail_id int8,bill_type        int4,pay_type         int4,pay_channel_id   int4,pay_amount       int8,bill_created_at  timestamp,pay_at           timestamp ,pay_year         varchar(4) ,pay_month        varchar(7),pay_day          date,PRIMARY KEY (traffic_id, pay_type,pay_month)
)
-- 设置列存储
WITH (orientation = COLUMN,enable_hstore_opt = ON,compression = middle,colversion = 3.0,enable_delta = FALSE,enable_hstore = TRUE,enable_turbo_store = TRUE
)
TABLESPACE cu_obs_tbs
-- 按 pay_month 进行列表分区
PARTITION BY LIST (pay_month) (PARTITION p_unknown VALUES ((''))
);

4.2.3 增加分区

ALTER TABLE etc_test.traffic_payment ADD PARTITION p_2025_01 VALUES ('2025-01');
ALTER TABLE etc_test.traffic_payment ADD PARTITION p_2025_02 VALUES ('2025-02');
ALTER TABLE etc_test.traffic_payment ADD PARTITION p_2025_03 VALUES ('2025-03');
ALTER TABLE etc_test.traffic_payment ADD PARTITION p_2025_04 VALUES ('2025-04');
ALTER TABLE etc_test.traffic_payment ADD PARTITION p_2025_05 VALUES ('2025-05');
ALTER TABLE etc_test.traffic_payment ADD PARTITION p_2025_06 VALUES ('2025-06');
ALTER TABLE etc_test.traffic_payment ADD PARTITION p_2025_07 VALUES ('2025-07');
ALTER TABLE etc_test.traffic_payment ADD PARTITION p_2025_08 VALUES ('2025-08');
ALTER TABLE etc_test.traffic_payment ADD PARTITION p_2025_09 VALUES ('2025-09');
ALTER TABLE etc_test.traffic_payment ADD PARTITION p_2025_10 VALUES ('2025-10');
ALTER TABLE etc_test.traffic_payment ADD PARTITION p_2025_11 VALUES ('2025-11');
ALTER TABLE etc_test.traffic_payment ADD PARTITION p_2025_12 VALUES ('2025-12');

4.2.4 增加表字段注释

comment on column etc_dwd.traffic_payment.traffic_id is '通行账单id';
comment on column etc_dwd.traffic_payment.vehicle_id is '车辆id';
comment on column etc_dwd.traffic_payment.member_detail_id is '用户实名ID';
comment on column etc_dwd.traffic_payment.bill_type is '账单类型 1 通行费 2 服务费 3 通道费 4 滞纳金 5 返白费';
comment on column etc_dwd.traffic_payment.pay_type is '支付类型 0 自动划扣 1 主动还款 2 人工结清';
comment on column etc_dwd.traffic_payment.pay_channel_id is '支付渠道id';
comment on column etc_dwd.traffic_payment.pay_amount is '支付金额';
comment on column etc_dwd.traffic_payment.bill_created_at is '账单请款时间(创建时间)';
comment on column etc_dwd.traffic_payment.pay_at is '支付时间';
comment on column etc_dwd.traffic_payment.pay_year is '支付所属年份';
comment on column etc_dwd.traffic_payment.pay_month is '支付所属月份';
comment on column etc_dwd.traffic_payment.pay_day is '支付所属日期';

4.2.5 增加表名注释

comment on table etc_dwd.traffic_payment is '通行账单费用拆分表'

4.2.6 创建索引

SET behavior_compat_options = 'create_partition_local_index';

CREATE INDEX idx_local_vehicle_id ON etc_dwd.traffic_payment (vehicle_id);

4.2.7 清除表数据

truncate table etc_dwd.traffic_payment;

4.3 删除表

DROP TABLE etc_test.traffic_payment;

4.4 删除库

DROP schema etc_test;

4.5 华为云分区表样例(9.5版本开始

CREATE TABLE etc_test.traffic (
-- 这里添加表的其他字段,以 id 为例
id INT,
month VARCHAR(7),
PRIMARY KEY (id) )
PARTITION BY RANGE (month) (
-- 定义分区,这里以 2025 年的每个月为例
PARTITION p_2025_01 VALUES LESS THAN ('2025-02'),
PARTITION p_2025_02 VALUES LESS THAN ('2025-03'),
PARTITION p_2025_03 VALUES LESS THAN ('2025-04'),
PARTITION p_2025_04 VALUES LESS THAN ('2025-05'),
PARTITION p_2025_05 VALUES LESS THAN ('2025-06'),
PARTITION p_2025_06 VALUES LESS THAN ('2025-07'),
PARTITION p_2025_07 VALUES LESS THAN ('2025-08'),
PARTITION p_2025_08 VALUES LESS THAN ('2025-09'),
PARTITION p_2025_09 VALUES LESS THAN ('2025-10'),
PARTITION p_2025_10 VALUES LESS THAN ('2025-11'),
PARTITION p_2025_11 VALUES LESS THAN ('2025-12'),
PARTITION p_2025_12 VALUES LESS THAN ('2026-01')
);

4.6 参考同事样例

CREATE TABLE IF NOT EXISTS bill_clean_detail (
    id bigint NOT NULL,
    vehicle_id bigint,
    member_detail_id bigint,
    receipt_amt bigint DEFAULT 0::bigint,
    car_no character varying (1020) DEFAULT '0'::character varying,
    province_short_name character varying (8),
    site_in character varying (1020) NOT NULL,
    site_in_at timestamp (0) without TIME zone,
    site_in_province character varying (1020),
    site_in_city character varying (1020),
    site_in_county character varying (1020),
    site_in_lng character varying (1020),
    site_in_lat character varying (1020),
    site_out character varying (1020) NOT NULL,
    site_out_at timestamp (0) without TIME zone,
    site_out_province character varying (1020),
    site_out_city character varying (1020),
    site_out_county character varying (1020),
    site_out_lng character varying (1020),
    site_out_lat character varying (1020),
    created_at character varying (40),
    month_date character varying (28),
    YEAR character varying (16)
)
WITH (
    orientation = COLUMN,
    enable_hstore_opt = ON,
    compression = middle,
    colversion = 3.0,
    enable_delta = FALSE,
    enable_hstore = TRUE,
    enable_turbo_store = TRUE
)
TABLESPACE cu_obs_tbs
-- 按 province_short_name 进行列表分区
PARTITION BY LIST (province_short_name) (
    PARTITION p_unknown VALUES ((''))
);
ALTER TABLE footprint_data_detail1 ADD PARTITION p_jingA VALUES (('京A'));

ALTER TABLE footprint_data_detail1 ADD PARTITION p_chuanJ VALUES (('川J'));
ALTER TABLE footprint_data_detail1 ADD PARTITION p_jinA VALUES (('晋A'));

--插入数据

insert into footprint_data_detail1
select * from footprint_data_detail
where created_at<'2024-10-01'
and created_at>='2024-09-01'

总之,PostgreSQL 9.2.4受版本限制,建表,尤其是主键和分区表有点难度

相关文章:

二百八十五、华为云PostgreSQL——建分区表并设置主键

一、目的 在PostgreSQL里建表&#xff0c;设置主键&#xff0c;三个字段确认数据的唯一性。设置分区字段&#xff0c;按月分区 二、PostgreSQL版本 三、PostgreSQL 9.2.4 版本缺点 在 PostgreSQL 9.2.4 中&#xff0c;虽然你可以创建分区表&#xff0c;但需要注意的是&#…...

系统架构设计师-第3章 数据库设计

【本章学习建议】 根据考试大纲&#xff0c;本章主要考查系统架构设计师单选题&#xff0c;预计考5分左右&#xff0c;以及案例分析1题&#xff0c;25分。对应第二版教材2.3.3小节以及第6章&#xff0c;主要考点在第6章&#xff0c;这里一起合并到本章课程中。 3.1 数据库基本…...

SAP MDG —— MDG on S/4HANA 2023 FPS03 创新汇总

文章目录 MDG 基于SAP S/4HANA 2023 FPS03的创新BP/C/S&#xff1a;消息控制BP/C/S&#xff1a;手工分配数据控制者MDG-F&#xff1a;使用S/4扩展数据校验功能生成式AI可用于协助自定义对象的数据变更/同时可总结批量变更的内容 MDG 基于SAP S/4HANA 2023 FPS03的创新 由于从S…...

软考中级-数据库-3.2 数据结构-数组和矩阵

数组 一维数组是长度固定的线性表&#xff0c;数组中的每个数据元素类型相同。n维数组是定长线性表在维数上的扩张&#xff0c;即线性表中的元素又是一个线性表。 例如一维数组a[5][a1,a2,a3,a4,a5] 二维数组a[2][3]是一个2行2列的数组 第一行[a11,a12,a13] 第二行[a21,a22,a23…...

有符号数和无符号数的加减运算

一、无符号数的加减运算 加法 规则&#xff1a;直接按二进制逐位相加&#xff0c;若最高位产生进位&#xff08;即结果超出(2^n)范围&#xff09;&#xff0c;则结果对(2^n)取模&#xff08;(n)为位数&#xff09;。示例&#xff08;8位无符号数&#xff09;&#xff1a; (200 …...

动态链接器(十):重定位

ELF文件中有许多种类型的重定位条目&#xff0c;这些重定位条目指导动态链接器在加载或运行时解析符号地址&#xff0c;确保程序能够正确地引用动态库中的函数和变量。 本文主要介绍那些与动态链接有关的重定位条目&#xff08;主要介绍Rela相关的&#xff0c;Rel相关的不作介…...

EGO-Planner的无人机视觉选择(yolov5和yolov8)

EGO-Planner的无人机视觉选择&#xff08;yolov5和yolov8&#xff09; 效果 yolov5检测效果 yolov8检测效果 一、YOLOv8 vs YOLOv5&#xff1a;关键差异解析 1. 训练效率&#xff1a;为何YOLOv8更快&#xff1f; 架构轻量化 YOLOv8采用C2f模块&#xff08;Cross Stage Partia…...

IO标准函数和时间函数

1、将当前的时间写入到time. txt的文件中&#xff0c;如果ctrlc退出之后&#xff0c;在再次执行支持断点续写 1.2022-04-26 19:10:20 2.2022-04-26 19:10:21 3.2022-04-26 19:10:22 //按下ctrlc停止&#xff0c;再次执行程序 4.2022-04-26 20:00:00 5.2022-04-26 20:00:0…...

为AI聊天工具添加一个知识系统 之133 详细设计之74通用编程语言 之4 架构及其核心

本篇继续讨论 通用编程语言。 说明&#xff1a;本阶段的所有讨论都是围绕这一主题展开的&#xff0c;但前面的讨论分成了三个大部分&#xff08;后面列出了这一段的讨论题目的归属关系&#xff09;-区别distinguish&#xff08;各别&#xff09;&#xff1a; 文化和习俗。知识…...

【零基础到精通Java合集】第二十三集:G1收集器深度解析

课程标题:G1收集器深度解析——面向大内存与低延迟的现代垃圾回收器(15分钟) 目标:掌握G1核心设计思想、运行机制与调优策略,理解其如何平衡吞吐量与低延迟 0-1分钟:课程引入与G1设计目标 以“城市交通智能调度”类比G1核心思想:将堆内存划分为多个区域(Region),动…...

似然函数与极大似然估计

前言 本文隶属于专栏《机器学习数学通关指南》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 &#x1f4da; 1. 似然函数&a…...

QSFP(Quad Small Form-factor Pluggable)详解

1. QSFP的定义 QSFP&#xff08;Quad Small Form-factor Pluggable&#xff09;是一种四通道热插拔光模块/电模块&#xff0c;专为高速网络传输设计。其名称中的“Quad”表示模块集成4个独立通道&#xff0c;每个通道支持1Gbps至10Gbps速率&#xff08;总带宽可达40Gbps&#…...

WDM_OTN_基础知识_波分系统基本构成-无源器件

在波分系统中通常将发光,对光进行放大以及产生光电转换的器件称之为有源器件&#xff0c;例如光放&#xff0c;激光器&#xff0c;与此相反&#xff0c;将那些不发光&#xff0c;不对光进行放大&#xff0c;也不产生光电转换的器件称之为无源器件&#xff0c;波分系统中的无源器…...

【音视频】ffmpeg音视频处理基本流程

一、ffmpeg音视频处理基本流程 首先先看两条命令 ffmpeg -i 1.mp4 -acodec copy -vcodec libx264 -s 1280x720 2.flv ffmpeg -i 1.mp4 -acodec copy -vcodec libx265 -s 1280x720 3.mkv-i :表示输入源&#xff0c;这里是1.mp4&#xff0c;是当前路径下的视频文件-acodec copy…...

【网络编程】之TCP实现客户端远程控制服务器端及断线重连

【网络编程】之TCP实现客户端远程控制服务器端及断线重连 TCP网络通信实现客户端简单远程控制主机基本功能演示通信过程代码实现服务器模块执行命令模块popen系列函数 客户端模块服务器主程序 windows作为客户端与服务器通信#pragma comment介绍 客户端使用状态机断线重连代码实…...

云原生容器编排:构建智能弹性应用的自动化引擎

引言&#xff1a;重构应用部署范式 Google Borg系统管理着超2500万容器实例&#xff0c;每日处理200亿个任务。阿里巴巴双十一使用Kubernetes实现300万Pod秒级弹性&#xff0c;资源利用率达65%。CNCF 2023报告显示全球Kubernetes生产采用率突破92%&#xff0c;CRI-O容器启动速…...

centos虚拟机安装

以下是一个详细的 VMware CentOS 虚拟机安装教程&#xff0c;结合了最新的信息和步骤&#xff1a; 一、准备工作 1. 下载 VMware 软件 访问 VMware 官方网站&#xff1a;VMware Workstation 官网。点击“现在安装”并下载适合您操作系统的 VMware Workstation。 2. 下载 Ce…...

社会力模型:Social force model for pedestrian dynamics

Social Force Model——社会力模型-CSDN博客 简介&#xff1a; 时间&#xff1a;1995 期刊&#xff1a;《Physical Review E》 作者&#xff1a;Dirk Helbing and Peter Molnar 摘要&#xff1a; 提出一种描述行人运动的“社会力模型”。认为行人的运动可看作是受到一系列…...

机器学习数学通关指南

✨ 写在前面 &#x1f4a1; 在代码的世界里沉浸了十余载&#xff0c;我一直自诩逻辑思维敏捷&#xff0c;编程能力不俗。然而&#xff0c;当我初次接触 DeepSeek-R1 并领略其清晰、系统的思考过程时&#xff0c;我不禁为之震撼。那一刻&#xff0c;我深刻意识到&#xff1a;在A…...

【Mac】2025-MacOS系统下常用的开发环境配置

早期版本的一个环境搭建参考 1、brew Mac自带终端运行&#xff1a; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Installation successful!成功后运行三行命令后更新环境&#xff08;xxx是mac的username&a…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...