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;

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在将大量数据上传到Oracle数据库时,可以采取以下优化方法以提高性能和效率: 1. 使用批量插入操作:使用Oracle提供的批量插入操作,如`INSERT ALL`语句或`INSERT INTO ... SELECT`语句,可以一次性插入多行数据,减少了网络开销和事务处理的次数。 2. 提交事务的频率:将数据分批提交事务,而不是每次插入一条数据就提交一次事务。这样可以减少事务的开销,并提高插入数据的速度。 3. 禁用索引或约束:在大量数据插入过程中,禁用相关的索引和约束。这样可以减少索引和约束的维护操作,提高插入数据的速度。在插入完成后,再重新启用索引和约束。 4. 使用并行操作:通过并行执行插入操作,可以利用多个CPU和并行处理能力来加速数据上传过程。可以通过设置表级别或会话级别的并行度来实现。 5. 调整数据库参数:根据具体情况,调整Oracle数据库的相关参数,如SGA大小、PGA大小、日志文件大小等,以优化数据库的性能。可以根据实际需求和系统资源进行测试和调整。 6. 使用外部表或批量导入工具:如果数据源是外部文件,可以使用Oracle的外部表功能或批量导入工具,如SQL*Loader或Data Pump,来实现高效数据上传。 7. 分区表和并行加载:如果目标表是分区表,并且数据可以按照分区键进行划分,可以使用并行加载来同时加载多个分区,提高数据加载的效率。 8. 监控和调优:通过监控数据库的性能指标,如I/O、CPU和内存使用情况,以及数据上传过程中的锁和等待事件,及时发现瓶颈并进行调优。 需要根据实际情况选择和组合这些优化方法,并在测试环境中进行性能测试和调整。同时,还应注意数据一致性和错误处理,确保数据上传的正确性和完整性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值