使用for循环给历史分区表循环导入数据

场景:时间分区表导入历史数据
考虑写for循环读日期数据赋值给变量做分区

--源数据表
create table table_lee_h(column_a  varchar2(8),
                       column_b    varchar2(8),
                       column_date varchar2(8))
                       
--被导入数据历史表
create table table_lee_h(column_a  varchar2(8),
                       column_b    varchar2(8),
                       column_date varchar2(8))
partition by list (column_date)
(partition P_20191121 values('20191121'));

以下是处理过程

--以下为处理过程
is_exists int;

FOR mm IN (SELECT 'P_'||column_date part_id,column_date FROM table_lee) LOOP

SELECT COUNT(*) INTO is_exists 
  FROM user_tab_partition a
 WHERE a.partition_name = mm.part_id
   AND table_name = 'table_lee_h';
--如果分区存在则删除
IF is_exists >= 1 THEN
   EXECUTE IMMEDIATE 'alter table table_lee_h drop partition'||mm.part_id;
END IF;
END LOOP;


FOR pp IN (SELECT 'P_'||column_date part_id,column_date FROM table_lee) LOOP

SELECT COUNT(*) INTO is_exists 
  FROM user_tab_partition a
 WHERE a.partition_name = mm.part_id
   AND table_name = 'table_lee_h';
--如果分区不存在则创建
IF is_exists = 0 THEN
   EXECUTE IMMEDIATE 'alter table table_lee_h add partition'||pp.part_id VALUES ('''||pp.column_dat||''')';
END IF;
END LOOP;

通过for循环读取源数据的日期赋值给变量,通过变量动态创建分区;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D2cOneluo

万一有大佬给个打赏呢,对不对。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值