如何更新几十万上百万的数据在ORACLE和MYSQL

Posted TGB-Earnest

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更新几十万上百万的数据在ORACLE和MYSQL相关的知识,希望对你有一定的参考价值。

需求

最近一直在忙于开发新的产品,产品开发完之后,接收到运营通知,说要更换线上的数据,数据量在几十万到百万之间,那如何更新呢?

分析

因为是线上的数据更新,我当时想着先在本地建立一个临时表,上传到临时表,然后把这个临时表给DBA,再用SQL语句做关联就行了。但是当我在本地用Excle导入到临时表的时候,发现很容易出错。
然后联系上DBA,DBA说在线上有我们能操作的库,这个库就是为了临时表的。

处理

所以最后的处理方式就是我在本地生成SQL脚本然后给DBA插入到线上临时表,再做关联即可。用时几分钟就可以了。

=CONCATENATE("insert into TMP_ZHITOU_BASIC (KEYWORD,KEYWORD_YEAR_PRICE,ISSALE,VERSION) values ('",A101182,"',",B101182,",",C101182,",",D101182,");")

ORACLE的关联写法:


  DECLARE
      pushcount INTEGER := 0;
    BEGIN
    FOR p IN (select KEYWORD_YEAR_PRICE,VERSION,KEYWORD from MATCH_READ.TMP_ZHITOU_BASIC) LOOP
         update xxx  v1 SET v1.PUBDATE=SYSDATE,v1.KEYWORD_YEAR_PRICE = p.KEYWORD_YEAR_PRICE WHERE v1.STATE = '0' AND v1.ISSALE = 0 AND v1.VERSION=p.VERSION AND v1.KEYWORD = p.KEYWORD;
      END LOOP;
    commit;
    exception
    when others then
      rollback;
      dbms_output.put_line(sqlerrm);
    END;

温馨提示:SQL关联是临时表和线上表做关联的,把临时表的数据更新到线上表

以上是关于如何更新几十万上百万的数据在ORACLE和MYSQL的主要内容,如果未能解决你的问题,请参考以下文章

使用BeetleX的TcpBenchmark工具进行百万设备模拟测试

怎样把access里面的上百万的数据导出到excel里面来?我现在是2010office。

有一张表里面有上百万的数据,在做查询的时候,如何优化?从数据库端,java端和查询语句上回答

Kafka如何保证百万级写入速度 并 保证不丢失不重复消费

阿里云高可用架构之“CDN+WAF+SLB+ECS---扛住上百万的用户

聊聊 Kafka: Kafka 为啥这么快?