频道栏目
首页 > 资讯 > SQL Server > 正文

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

18-05-16        来源:[db:作者]  
收藏   我要投稿

前段时间生产出问题,,有些数据丢失了,,这边经理让我把丢失数据 补全,然后我就写了个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万条数据,数据都是正常的,所以,不用担心明天上线的内容会有问题了,啦啦啦~

相关TAG标签
上一篇:如何查询Windows默认编码格式?
下一篇:linux 用户和组、权限和归属、文件和目录
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站