HGDB-修改分区表名称及键值

news2024/12/23 18:12:14

瀚高数据库
目录
环境
文档用途
详细信息

环境
系统平台:N/A
版本:4.5.7
文档用途
使用存储过程拼接SQL,修改分区名称、分区键值、并重新加入主表,适用于分区表较多场景。

详细信息
说明:本文档为测试过程;整体测试思路为,先将分区表与主表分离->其次修改该表的表名->然后修改该表与分区键相关数据->最后将该表加入主表。

1.处理过程

1.1创建两张测试表及分区表并插入数据

--创建测试主表1

create table test.fenqu1(

qhdm text,

qxname text,

id int,

xinxi TEXT

) partition by list(qhdm);

--创建测试主表为1的分区表

create table test.fenqu1_part_120100 partition of test.fenqu1 for values in ('120100');

create table test.fenqu1_part_120000 partition of test.fenqu1 for values in ('120000');

 

--创建测试主表2

create table test.fenqu2(

qhdm text,

qxname text,

id int,

xinxi TEXT

) partition by list(qhdm); 

--创建测试主表为1的分区表

create table test.fenqu2_part_120100 partition of test.fenqu2 for values in ('120100');

create table test.fenqu2_part_120000 partition of test.fenqu2 for values in ('120000');

--插入数据至主表1

insert into test.fenqu1 values('120100','bbb','1','zhao');

insert into test.fenqu1 values('120100','bbb','2','qian');

insert into test.fenqu1 values('120100','bbb','3','sun');

insert into test.fenqu1 values('120100','bbb','4','li');

insert into test.fenqu1 values('120100','bbb','5','chen');

insert into test.fenqu1 values('120100','bbb','6','tie');

insert into test.fenqu1 values('120100','bbb','7','song');

insert into test.fenqu1 values('120100','bbb','8','shen');

insert into test.fenqu1 values('120100','bbb','9','cheng');

insert into test.fenqu1 values('120100','bbb','10','wang');

insert into test.fenqu1 values('120100','bbb','11','ouyang');

insert into test.fenqu1 values('120100','bbb','12','chu');

insert into test.fenqu1 values('120000','aaa','20','zhao');

insert into test.fenqu1 values('120000','aaa','21','qian');

insert into test.fenqu1 values('120000','aaa','22','sun');

insert into test.fenqu1 values('120000','aaa','23','li');

insert into test.fenqu1 values('120000','aaa','24','chen');

insert into test.fenqu1 values('120000','aaa','25','tie');

insert into test.fenqu1 values('120000','aaa','26','song');

insert into test.fenqu1 values('120000','aaa','27','shen');

insert into test.fenqu1 values('120000','aaa','28','cheng');

insert into test.fenqu1 values('120000','aaa','29','wang');

insert into test.fenqu1 values('120000','aaa','30','ouyang');

insert into test.fenqu1 values('120000','aaa','31','chu'); 

--插入数据至主表2

insert into test.fenqu2 values('120100','bbb','1','赵');

insert into test.fenqu2 values('120100','bbb','2','钱');

insert into test.fenqu2 values('120100','bbb','3','孙');

insert into test.fenqu2 values('120100','bbb','4','李');

insert into test.fenqu2 values('120100','bbb','5','陈');

insert into test.fenqu2 values('120100','bbb','6','铁');

insert into test.fenqu2 values('120100','bbb','7','宋');

insert into test.fenqu2 values('120100','bbb','8','申');

insert into test.fenqu2 values('120100','bbb','9','成');

insert into test.fenqu2 values('120100','bbb','10','王');

insert into test.fenqu2 values('120100','bbb','11','欧阳');

insert into test.fenqu2 values('120100','bbb','12','褚');

insert into test.fenqu2 values('120000','aaa','20','ss');

insert into test.fenqu2 values('120000','aaa','21','等等');

insert into test.fenqu2 values('120000','aaa','22','ff');

insert into test.fenqu2 values('120000','aaa','23','刚刚');

insert into test.fenqu2 values('120000','aaa','24','给');

insert into test.fenqu2 values('120000','aaa','25','铁');

insert into test.fenqu2 values('120000','aaa','26','啦啦');

insert into test.fenqu2 values('120000','aaa','27','联想');

insert into test.fenqu2 values('120000','aaa','28','成');

insert into test.fenqu2 values('120000','aaa','29','啊哈哈');

insert into test.fenqu2 values('120000','aaa','30','切');

insert into test.fenqu2 values('120000','aaa','31','来来来');

1.2通过主表查看两张表所插入的数据

test_biaofenqu=# select * from test.fenqu1;
  qhdm  | qxname | id | xinxi

--------+--------+----+--------

 120000 | aaa    | 20 | zhao

 120000 | aaa    | 21 | qian

 120000 | aaa    | 22 | sun

 120000 | aaa    | 23 | li

 120000 | aaa    | 24 | chen

 120000 | aaa    | 25 | tie

 120000 | aaa    | 26 | song

 120000 | aaa    | 27 | shen

 120000 | aaa    | 28 | cheng

 120000 | aaa    | 29 | wang

 120000 | aaa    | 30 | ouyang

 120000 | aaa    | 31 | chu

 120100 | bbb    | 1 | zhao

 120100 | bbb    | 2 | qian

 120100 | bbb    | 3 | sun

 120100 | bbb    | 4 | li

 120100 | bbb    | 5 | chen

 120100 | bbb    | 6 | tie

 120100 | bbb    | 7 | song

 120100 | bbb    | 8 | shen

 120100 | bbb    | 9 | cheng

 120100 | bbb    | 10 | wang

 120100 | bbb    | 11 | ouyang

 120100 | bbb    | 12 | chu

(24 行记录)

 

test_biaofenqu=# select * from test.fenqu2;

  qhdm  | qxname | id | xinxi

--------+--------+----+--------

120000 | aaa    | 20 | ss

120000 | aaa    | 21 | 等等

120000 | aaa    | 22 | ff

120000 | aaa    | 23 | 刚刚

120000 | aaa    | 24 |120000 | aaa    | 25 |120000 | aaa    | 26 | 啦啦

120000 | aaa    | 27 | 联想

120000 | aaa    | 28 |120000 | aaa    | 29 | 啊哈哈

120000 | aaa    | 30 |120000 | aaa    | 31 | 来来来

120100 | bbb    | 1 |120100 | bbb    | 2 |120100 | bbb    | 3 |120100 | bbb    | 4 |120100 | bbb    | 5 |120100 | bbb    | 6 |120100 | bbb    | 7 |120100 | bbb    | 8 |120100 | bbb    | 9 |120100 | bbb    | 10 |120100 | bbb    | 11 | 欧阳

120100 | bbb    | 12 |

1.3查看主表与分区表的关系

图片1.png
在这里插入图片描述

1.4创建存储过程及存储过程使用的相关表格

1)创建用于存放新老区划编码对应表格table_qhdm,并插入数据;

--创建表格table_qhdm,用于存所有的区划代码

create table table_qxdm (

    qhdm text

,

    qxdmnew TEXT

) ;

--插入区划编码数据

insert into table_qxdm values('120100','130100');

insert into table_qxdm values('120000','130000');2)   创建表格table_tablename,用于存放所有主表的名称,并插入数据

create table table_tablename (

    tabname text

) ;

 

--插入主表名称数据

insert into table_tablename values('fenqu1');

insert into table_tablename values('fenqu2');3)创建存放拼接后的sql语句存放表格ql_pinjie

--创建用于存储拼接后的语句表sql_pinjie

create table sql_pinjie (

    sql_pinjie text

) ;4)创建拼接过程中存放报错表格tab_error

create table tab_error (

    tab_error_sql text

) ;5)创建存储过程update_fenqu_table

CREATE OR REPLACE PROCEDURE test.update_fenqu_table()

 LANGUAGE plpgsql

AS $procedure$

DECLARE

         v_qhdm record ;

     v_tablename record ;

     v_count int8 ;

BEGIN

    --获取所有区划代码,区划代码包括,旧区划代码,新区划代码

 FOR v_qhdm in ( select qhdm , qxdmnew from table_qxdm )

 loop BEGIN

     FOR v_tablename in ( select tabname from table_tablename )

    loop BEGIN

    insert into sql_pinjie VALUES ('alter table test.'||v_tablename.tabname ||' detach PARTITION test.'||v_tablename.tabname||'_part_'|| v_qhdm.qhdm || ';' ) ;    

 

    insert into sql_pinjie VALUES ('alter table test.'||v_tablename.tabname||'_part_'||v_qhdm.qhdm||' RENAME to '||v_tablename.tabname||'_part_'|| v_qhdm.qxdmnew||';') ;

 

    insert into sql_pinjie VALUES ( 'update test.'||v_tablename.tabname||'_part_'||v_qhdm.qxdmnew||' set qhdm='''||v_qhdm.qxdmnew||''';') ;

    insert into sql_pinjie VALUES ( 'alter table test.'||v_tablename.tabname||' ATTACH PARTITION test.'||v_tablename.tabname||'_part_'||v_qhdm.qxdmnew||' for values in ('''||v_qhdm.qxdmnew||''');');

 

EXCEPTION WHEN OTHERS THEN insert

        into tab_error values ( 'EXCEPT TABLE' || v_tablename.tabname || '_part_' || v_qhdm.qhdm || ';' ) ;

   END ;

   END loop ;

   COMMIT ;

   END ;

   END loop ;

   END $procedure$;6)执行存储过程update_fenqu_table

  call update_fenqu_table

(7)查看所拼接的sql语句

test_biaofenqu=# select * from sql_pinjie;

                      sql_pinjie

--------------------------------------------------------------------------------------------

 alter table test.fenqu1 detach PARTITION test.fenqu1_part_120100;

 alter table test.fenqu1_part_120100 RENAME to fenqu1_part_130100;

 update test.fenqu1_part_130100 set qhdm='130100';

 alter table test.fenqu1 ATTACH PARTITION test.fenqu1_part_130100 for values in ('130100');

 alter table test.fenqu2 detach PARTITION test.fenqu2_part_120100;

 alter table test.fenqu2_part_120100 RENAME to fenqu2_part_130100;

 update test.fenqu2_part_130100 set qhdm='130100';

 alter table test.fenqu2 ATTACH PARTITION test.fenqu2_part_130100 for values in ('130100');

 alter table test.fenqu1 detach PARTITION test.fenqu1_part_120000;

 alter table test.fenqu1_part_120000 RENAME to fenqu1_part_130000;

 update test.fenqu1_part_130000 set qhdm='130000';

 alter table test.fenqu1 ATTACH PARTITION test.fenqu1_part_130000 for values in ('130000');

 alter table test.fenqu2 detach PARTITION test.fenqu2_part_120000;

 alter table test.fenqu2_part_120000 RENAME to fenqu2_part_130000;

 update test.fenqu2_part_130000 set qhdm='130000';

 alter table test.fenqu2 ATTACH PARTITION test.fenqu2_part_130000 for values in ('130000');

(16 行记录)8)执行对应的sql,对分区表完成操作

 alter table test.fenqu1 detach PARTITION test.fenqu1_part_120100;

 alter table test.fenqu1_part_120100 RENAME to fenqu1_part_130100;

 update test.fenqu1_part_130100 set qhdm='130100';

 alter table test.fenqu1 ATTACH PARTITION test.fenqu1_part_130100 for values in ('130100');

 

 alter table test.fenqu2 detach PARTITION test.fenqu2_part_120100;

 alter table test.fenqu2_part_120100 RENAME to fenqu2_part_130100;

 update test.fenqu2_part_130100 set qhdm='130100';

 alter table test.fenqu2 ATTACH PARTITION test.fenqu2_part_130100 for values in ('130100');

 

 alter table test.fenqu1 detach PARTITION test.fenqu1_part_120000;

 alter table test.fenqu1_part_120000 RENAME to fenqu1_part_130000;

 update test.fenqu1_part_130000 set qhdm='130000';

 alter table test.fenqu1 ATTACH PARTITION test.fenqu1_part_130000 for values in ('130000');

 

 alter table test.fenqu2 detach PARTITION test.fenqu2_part_120000;

 alter table test.fenqu2_part_120000 RENAME to fenqu2_part_130000;

 update test.fenqu2_part_130000 set qhdm='130000';

 alter table test.fenqu2 ATTACH PARTITION test.fenqu2_part_130000 for values in ('130000');

1.5查看修改后主表与分区表的关系

33.png
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/987981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

15 轮转数组

轮转数组 题解1 环状替换(学习思想)(空间O(1))题解2 翻转数组(有意思好理解)(空间O(1))题解3 空间O(N)秒答 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置&a…

护眼台灯A级好还是AA级好?盘点五款AA级台灯

台灯如何选择,随着人们生活水平的提高及科技的不断进步,台灯的品质也得到了极大的提高,在生活中很多时候都需要使用台灯,但是市面上的台灯那么多,台灯如何选择 国aa级是对台灯的照度进行的一个很重要的划分&#xff0…

【2023集创赛】安谋科技杯全国一等奖分享:基于安路PH1A60的3D图形体感游戏机

本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)安谋科技杯全国一等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电…

leetcode 215.数组中第k大的元素

⭐️ 题目描述 🌟 leetcode链接:数组中第k大的元素 思路: 使用堆数据结构,大堆的堆顶是堆内最大的元素,也就是把当前堆 pop k - 1 次,第 k 次 top 出来的元素就是第 k 大的数。 代码: class …

Python中的Pathlib

迷途小书童 读完需要 4分钟 速读仅需 2 分钟 大家好,我是迷途小书童! 今天给大家介绍 Python 中的内置库 Pathlib。 pathlib 模块是 Python 3.4 中新增的标准库,它提供了面向对象的文件系统路径处理方法。pathlib 致力于解决直接操作文件路径…

宝塔Linux面板的安装配置

一、 宝塔Linux面板的功能 宝塔面板是一款服务器管理软件,可以帮助用户建立网站,一键配置服务器环境,使得用户通过web界面就可以轻松的管理安装所用的服务器软件。 二、宝塔Linux面板的安装 宝塔官网地址:https://www.bt.cn/new…

【C++进阶(五)】STL大法--list模拟实现以及list和vector的对比

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 list模拟实现 1. 前言2. list类的大致框架与结构…

开源协议对比:局限性、应注意事项与详细对比

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

浙江工业大学MBA和浙江工商大学MBA哪个容易上岸?

在浙江省内,一般嫌弃浙大MBA项目学费贵的考生基本会从其它八个MBA项目中做衡量选择,其中浙工大MBA和浙工商MBA项目就是不少考生经常会做对比的项目,究竟哪个项目更容易上岸也是大家所关注的话题之一,立足浙江的杭州达立易考教育结…

从融云数智办公平台,看企业需要什么样的大模型?

本文中,我们将聚焦 ToB 领域,打开 AIGC 在 C 端社交泛娱乐之外的另一个切面,探索 B 端叙事的新变化。关注【融云 RongCloud】,了解协同办公平台更多干货。 过去两年,关于互联网大厂最多的消息当属裁员和关停非短期商业…

2.9 PE结构:重建导入表结构

脱壳修复是指在进行加壳保护后的二进制程序脱壳操作后,由于加壳操作的不同,有些程序的导入表可能会受到影响,导致脱壳后程序无法正常运行。因此,需要进行修复操作,将脱壳前的导入表覆盖到脱壳后的程序中,以…

速看!外滩大会发布银行数字科技5大趋势

通用人工智能风起云涌,金融行业将如何应对? 9月8日,由中国银行业协会指导,网商银行承办的外滩大会银行业数字化论坛上,IDC中国副总裁兼首席分析师武连峰发布了《银行数字科技五大趋势》:随身银行、AI风控、…

群晖(Synology)NAS 后台安装 Docker 后配置 PostgreSQL

群晖(Synology)NAS 的后台在新版本对 Docker 不再称为 Docker,现在改称为 Container Manager 了。 单击进入后运行 Container Manager。 PostgreSQL 容器 针对 PostgreSQL 的容器,我们选择容器后,如果你已经安装了 P…

buffer pool原理总结

innodb buffer pool原理总结 文章目录 innodb buffer pool原理总结1. 缓存的重要性2. innodb buffer pool2.1 buffer pool的内部组成2.2 FREE链表2.3 FLUSH链表2.4 LRU链表2.4.1 LRU链表的功能预读 1. 缓存的重要性 我们都知道,对于innodb存储引擎的表来说&#xf…

快手用户活跃度分析(未完成)

目标 为期30天的用户数据,但是不是所有的用户都有30天的信息数据,比如用户A第7天注册的,则其前6天没有数据。 预测未来用户活跃度的可能性。 预测7天后的,基于第7天,预测第14天,基于第8天,预测…

2023数模A题——定日镜场的优化问题

A题——定日镜场的优化问题 思路:该题主要考察的几何知识和天文学知识,需要不同角度下的镜面和遮挡情况。 资料获取 问题1: 若将吸收塔建于该圆形定日镜场中心,定日镜尺寸均为 6 m6 m,安装高度均为 4 m,且…

解密Kubernetes(K8s)集群的创建过程和关键步骤

文章目录 1. 准备环境2. 安装Docker3. 安装Kubernetes在Master节点上执行以下步骤:安装kubeadm、kubelet和kubectl初始化Master节点 在工作节点上执行以下步骤:加入集群 4. 设置Kubeconfig5. 安装网络插件6. 验证集群7. 部署应用程序8. 扩展和管理集群9.…

Weblogic反序列化漏洞

文章目录 1、搭建环境2、漏洞特征3、漏洞利用1)获取用户名密码2)后台上传shell 4、检测工具 1、搭建环境 漏洞环境基于vulhub搭建–进入weak_password的docker环境 sudo docker-compose up -d拉取靶场 2、漏洞特征 404特征Weblogic常用端口:7001 3、漏洞利用…

centos7使用docker-compose一键搭建mysql高可用主从集群

docker部署 环境准备 卸载旧版本 yum remove -y docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine 安装依赖 yum install -y yum-utils \…

PCB - 封装焊盘阻焊层的检查

文章目录 PCB - 封装焊盘阻焊层的检查概述检查做出的实际PCB正反面厂家提供的生产稿PCB对应的原始gerber文件查封装拿一个插件电阻为例插件封装焊盘的基本数据END PCB - 封装焊盘阻焊层的检查 概述 打样回来, 看到要焊接的几个插件管脚有阻焊, 无法焊接. 这几个封装是直接从第…