写个PLSQL语句块,循环插入数据,是否会因为数据量过大而导致数据插入有问题

前段时间生产出问题,,有些数据丢失了,,这边经理让我把丢失数据 补全,然后我就写了个plsql语句块,在本地测试过数据也可以正常插入,,但是生产上面可能数据量比较大,应该有10万条左右,,有点怕会不会因为数据量过大导致PLSQL语句块插入数据有问题。这边,我也贴出这个plsql语句块

declare 
  table_name number :=20180501;
  act_code varchar2(20) :='''R%''';
   str_sql varchar2(8000);
   s number :=1;
begin
  loop 
    table_name:=table_name+1;
    dbms_output.put_line('循环了第'||s||'次,'||'表名为'||table_name);
      s :=s+1;
   str_sql :='
   insert into QYPT_MARKET_DETAIL_INFO 
       (
       FORM_TIME,
       MARKET_NO,
       CHANNEL_NO,
       APP_NO,
       FORM_ID,
       CARD,
       BANK_CODE,
       PHONE,
       GOOD_TYPE,
       GOOD_NO,
       FORM_PRICE,
       FORM_QUANTITY,
       FORM_TYPE,
       RETURN_PRICE,
       RETURN_QUANTITY
       )


select
           A.FORM_TIME,
          B.ACTCODE,
           A.CHANNEL_NO,
           A.APP_NO,
             A.FORM_ID,
              A.ACCOUNT,
           A.BANK_NO,
           A.REGISTER_PHONE,
           B.GOOD_TYPE,
           B.GOOD_ID,
           B.BUYPRICE,
            B.BUYNUM,
            0,
            0,
            0
      from qypt_pay_history_' || to_char(table_name) || ' a,
           (select count(*) as buyNum,
                   sum(t.actually_price) as buyPrice,
                   t.good_type,
                   t.good_id,
                   t.form_id,
                   t.actcode
              from qypt_pay_history_sub_' || to_char(table_name) || ' t
             where 
              t.pay_status = 1
               and t.stock_status = 1
               and t.splie_mode = 3
               and t.actcode like '|| act_code ||'
               and length(trim(t.actcode)) = 10
             group by t.good_type, t.good_id, t.form_id, t.actcode) b
     where to_char(a.id) = b.form_id
       and a.PAY_STATUS = 1
       and a.status = 1
       and a.splie_mode = 3
       order by a.id asc';
       execute immediate str_sql;
        EXIT WHEN table_name =20180503;
     END LOOP;
 
end;


带着这个问题,我做了一个测试

创建测试用的表


创建要迁移数据的表


插入对应的数据,这边插入数据,我就不多贴代码了,就只要改下表名以及对应的字段就行了,A_1,A_2,B_1,B_2等


将数据从A_1,A_2,B_1,B_2中插入到A_B表中


查询A_1表数据,可以看出,我这边以及插入9999条数据了,这边你想插多少条数据loop循环多少次就行了


查询B_1表

查询数据迁移到A_B的表中后的数据,

可以看出迁移的数据有10万条数据,数据都是正常的,所以,不用担心明天上线的内容会有问题了,啦啦啦~

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值