DB2分区表删除和添加分区
1.数据库版本
2.具体procedure
DROP PROCEDURE DB2USER.TOOLS_PARTITION_TABLE_SHOW (VARCHAR ());CREATE OR REPLACE PROCEDURE Tools_partition_table_show(IN ETL_DATE VARCHAR(8))/******************************************************************************NAME:PURPOSE:REVISIONS:Ver Date Author Description--------- ---------- ------------ ------------------------------------1.0 2015-07-22 Zen 1. 作为分区表添加和快速删除分区的一个示例供有相同需求的脚本参考。******************************************************************************/LANGUAGE SQL BEGINDECLARE V_LOCATION VARCHAR(100);DECLARE V_START_TIME TIMESTAMP;DECLARE V_SQLMSG VARCHAR(255);DECLARE V_CNT INT;DECLARE V_PARTITION_NAME VARCHAR(50);DECLARE V_PARTITION_END VARCHAR(50);DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS EXCEPTION 1 V_SQLMSG = MESSAGE_TEXT; CALL DB2USER.PRO_LOG(ETL_DATE,'Tools_partition_table_show','测试分区表作业方式',V_START_TIME,current timestamp,'ERROR',V_LOCATION,V_SQLMSG); END;/*清空目标表*/ SET V_START_TIME = current timestamp;SET V_LOCATION = '清空数据';/*DELETE FROM DB2USER.S_CLM_RATE_POL_AAA WHERE BBQ = SUBSTR(ETL_DATE,1,6);COMMIT;*/SET V_LOCATION = '测试保单赔率表的抽取开始';SET V_PARTITION_NAME = 'P'||SUBSTR(ETL_DATE,1,6);SET V_PARTITION_END = TO_CHAR(add_months(TO_DATE(ETL_DATE,'YYYYMMDD'),1),'YYYYMM');--SELECT TO_CHAR(add_months(TO_DATE(ETL_DATE,'YYYYMMDD'),1),'YYYYMM') INTO V_PARTITION_END FROM sysibm.dual;--判断分区是否存在,如果存在,数据转出删除SELECT COUNT(*) INTO V_CNT FROM syscat.datapartitions t WHERE tabschema='DB2USER' AND tabname='S_CLM_RATE_POL_AAA_TEST'AND datapartitionname=V_PARTITION_NAME ;IF V_CNT=1 THEN -- 分区数据转出EXECUTE IMMEDIATE 'ALTER TABLE S_CLM_RATE_POL_AAA_test DETACH PARTITION '||V_PARTITION_NAME||' INTO DB2USER.TEMP_S_CLM_RATE_POL_AAA';COMMIT;EXECUTE IMMEDIATE 'DROP TABLE DB2USER.TEMP_S_CLM_RATE_POL_AAA';END IF ;SET V_LOCATION = 'after 分区数据转出';--非正常DML或DDL 需要调用 sysproc.admin_cmd();--收集统计信息CALL SYSPROC.ADMIN_CMD('RUNSTATS ON TABLE db2user.S_CLM_RATE_POL_AAA_test');-- 添加新分区EXECUTE IMMEDIATE 'ALTER TABLE DB2USER.S_CLM_RATE_POL_AAA_test ADD PARTITION '||V_PARTITION_NAME||' STARTING '||SUBSTR(ETL_DATE,1,6)||' INCLUSIVE ENDING '||V_PARTITION_END||' exclusive';SET V_LOCATION = 'after 添加新分区';COMMIT;EXECUTE IMMEDIATE 'ALTER TABLE DB2USER.S_CLM_RATE_POL_AAA_test ACTIVATE NOT LOGGED INITIALLY';FOR REC AS WITH TMP(TYPE) AS (SELECT 'AAA1' AS TYPE FROM SYSIBM.DUALUNION ALLSELECT 'AAA2' AS TYPE FROM SYSIBM.DUALUNION ALLSELECT 'AAA4' AS TYPE FROM SYSIBM.DUAL)SELECT * FROM TMPDOSET V_LOCATION = 'test'||REC.TYPE;INSERT INTO DB2USER.S_CLM_RATE_POL_AAA_testSELECT......END FOR;CALL DB2USER.PRO_LOG(ETL_DATE,'Tools_partition_table_show','测试分区表作业方式',V_START_TIME,current timestamp,'SUCCESS','',''); END;
3.总结:
a.db2 中表分区目前只支持range分区,没有oracle的丰富。
b.分区不能直接删除必须先 DETACH PARTITION ,detach之后必须commit不然会报结构不完善的错误。
c.需要添加新的分区只需要直接 ADD partition。
d.DDL语句用在procedure中需要显示commit。
转载于:https://www.cnblogs.com/Alex-Zeng/p/4719210.html
DB2分区表删除和添加分区相关推荐
- hive创建分区表 hive添加分区 hive删除分区
创建外部分区表 create external table if not exists 表名 ( id int comment '唯一id', name string comment '姓名 ...
- mysql如何增加分区maxvalue_oracle range分区表已经有了MAXVALUE 分区,如何添加分区?要不能删除MAXVALUE分区里的数据,不影响在线应用。...
来做个实验说明该问题: 1.创建个分区表 SQL> create table p_range_test 2 (id number,name varchar2(100)) 3 partition ...
- Linux下fdisk命令操作磁盘详解--添加、删除、转换分区
linux下fdisk命令操作磁盘详解--添加.删除.转换分区等 fdisk 操作硬盘的命令格式如下: [root@localhost beinan]# fdisk 设备 比如我们通过 fdisk - ...
- mysql 添加分区_创建,增加,删除mysql表分区
1.测试添加分区和删除分区 ###添加删除range分区 (1)创建一个分区: CREATE TABLE titles ( emp_no INT NOT NULL, title ...
- linux fdisk等命令,Linux fdisk命令操作磁盘(添加、删除、转换分区等)
创建分区 1->查看原始分区 sudo fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/trac ...
- 删除hive的分区元数据,spark总是读取到已经删掉的分区
org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: hdfs://testcluster/user/h ...
- linux fdisk命令使用 fdisk删除、新建分区
fdisk 对硬盘及分区的操作,进入fdisk 对硬盘操作阶段 我们可以对硬盘进行分区操作,前提是您把fdisk -l 弄明白了:通过fdisk -l ,我们能找出机器中所有硬盘个数及设备名称:比如上 ...
- linux格式化大于2t硬盘分区,linux下大于2tb硬盘格式化及挂载,linux下大于2t的分区方法,linux gpt分区表 管理 自动挂载分区...
linux下大于2tb硬盘格式化及挂载,linux下大于2t的分区方法,linux gpt分区表 管理 自动挂载分区 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找 ...
- linux 创建/删除 swap交换分区
linux 创建/删除 swap交换分区 阿牛太帅 2019-02-20 15:16:02 2409 收藏 2 文章标签: swap交换分区 版权 linux 创建swap交换分区 swap 作为 ...
- mysql 删除创建表分区_创建,增加,删除mysql表分区
1.测试添加分区和删除分区 ###添加删除range分区 (1)创建一个分区: CREATE TABLE titles ( emp_no INT NOT NULL, title ...
最新文章
- 编程语言java-并发(锁)
- python工具是什么-使用Python编写命令行工具有什么好的库?
- boost::fusion::set用法的测试程序
- c语言宿舍管理查询软件,宿舍管理查询软件--数据结构,c语言
- [转]easyui datagrid 批量编辑和提交
- hypermesh 复合材料_【技术邻】HyperMesh复合材料建模——坐标系调整
- GetWindowLong和SetWindowLong函数
- android记事本项目案例,Android实现记事本项目完整实例源代码
- 大家不要催!雷军的螺丝刀已经准备好了...
- 计算机专业术语全称及含义整理
- linux debian安装ssh,Ubuntu Linux上安装SSH和vsFTPd的方法
- shopex PHP Notice,解决最新shopex乱码问题
- React+Dva使用d3绘图
- 计算机发展趋势 网络化,计算机的发展趋势表现在多极化网络化等几个方面
- 深圳东部公交WIFI试用体验
- 呆萌ps2显示服务器失败,呆萌PS2模拟器
- 特斯拉又撞“人”了 汽车激光雷达“盛宴”开启
- 记录渗透靶场实战【网络安全】
- spring框架xml的几种配置方式
- Intellij IDEA 学生的免费使用计划(使用edu邮箱注册)