如何更新几十万上百万的数据在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端和查询语句上回答