如何更新几十万上百万的数据在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的主要内容,如果未能解决你的问题,请参考以下文章