oracle数据库高效插入千万条数据

向ACCOUNTING_VOUCHER 表中插入千万条数据

    思路:   

        1.新建一张和ACCOUNTING_VOUCHER数据库表结构一致的临时表,ACCOUNTING_VOUCHER_TEMP

        2.向临时表ACCOUNTING_VOUCHER_TEMP中插入10条数据

       3.使用insert select的方式做表复制

  注意事项:

      如果数据库表中有唯一约束可以新建一个SEQUENCE,使用SEQUENCE进行插入

      插入数据之前先删除索引和唯一约束,设置执行脚本为nologging

 详细sql如下:

创建序列    

CREATE SEQUENCE OdinSeqTest

INCREMENT BY 1 -- 每次加几个

START WITH 1 -- 从1开始计数

NOMAXvalue -- 不设置最大值

NOCYCLE -- 一直累加,不循环

CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE

调用序列,插入一亿条数据

   

alter table nacc.T_ACC_VOUC_DET_TEST nologging;

declare 

num NUMBER;

begin

   for v_rlt in 1..1000000 loop

        INSERT INTO NACC.T_ACC_VOUC_DET_TEST SELECT T_ACC_VOUC_DET_ACC_NO_SE.NextVal, 'TF'||T_ACC_VOUC_DET_TRANS_FLOW_SE.NextVal, 'SF'||T_ACC_VOUC_DET_SYS_FLOW_ID_SE.NextVal, "TRANS_TYPE", "BUSI_CODE" FROM NACC.T_ACC_VOUC_DET_TEST_BAK;

    num:=num+1;

       IF Mod(num,5000)=0 THEN 

           COMMIT; 

        END IF; 

   end loop;

end;

猜你喜欢

转载自blog.csdn.net/qq_34671951/article/details/81457782