1亿条以上数据,备份历史表,并且删除正表数据方案

背景:
   将正表的数据备份到历史表里,且删除正表的数据

方案
   1 先将要备份的数据的主键全部放到一张临时表,且将临时表加索引
   2 从临时表去查找正表数据,然后备份该条数据到历史表里,然后删除正表数据
     在删除临时表数据(在查找临时表的时候,可以使用mod函数将该字段取余,起多个线程去做,
     可以实现数据不重复处理问题).

解决方案实现
   1:创建临时表
     create tabel task_chl_statuscd1100107 as select contact_task_chl_id from task_chl
   2: 为临时表创建索引
   3:创建存储过程(该存储过程可以替换为代码实现),作者循环调用存储过程
    create or replace procedure toTaskChl(i_size in number) is

  v_insertSql varchar2(500);
  v_tableDate varchar2(500);

begin
    --这里使用了mod函数的方式取数,然后代码调用该存储过程的时候,可以多线程,传不通的值
    -- 就不会出现取到重复的数据
  for r in (select *
              from task_chl_statuscd1100107
             where mod(contact_task_chl_id, 1) = i_size
               and rownum < 5001) loop
  
    select to_char(a.create_Date, 'yyyyMM')
      into v_tableDate
      from contact_task_chl a
     where a.contact_task_chl_id = r.contact_task_chl_id;
  
    v_insertSql := 'insert into contact_task_chl_' || v_tableDate |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值