oracle如何更新大批量的数
1、创建目标对象T_test,并插入10万条数据以SCOTT用户登录系统并创建目标表T_te衡痕贤伎st[oracle@rac1 ~]$sqlplus scott/SQL*Plus: Release 10.2.0.1.0 - Production on Fri Sep 25 10:32:14 2015Copyright (c) 1982, 2005, Oracle. All rights reserved.Enter password:Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, Real Application Clusters, OLAP and Data Mining optionsSQL>create table T_test(id int,name varchar2(20),telphone varchar2(20));Table created.SQL>T_test已成功创建。
2、通过PL/SQL往T_test插入10万条随机数据(ID从1到100000,name为随机大小字符串,telphone为随机8为数字)SQ讣嘬铮篌L>set serveroutput on;SQL>set timing on;SQL>declare 2begin 3for i in 1..100000 loop 4insert into T_test(id,name,telphone) values(i,(select dbms_random.string('U', 5) from dual),(select floor(dbms_random.value(10000000,99999999)) from dual)); 5commit; 6end loop; 7dbms_output.put_line('ok!'); 8end; 9/ok!PL/SQL procedure successfully completed.Elapsed: 00:00:50.34SQL>SQL>select count(*) from T_test; COUNT(*)---------- 100000Elapsed: 00:00:00.11SQL>10万随机数据已成功插入。
3、查询T_test的数据作为参考
4、新建一个符合要求的临时表T_temp,并插入要更新的数据创建临时表T_temp,必须有唯一列,再者就是更新列说明:这里假设需要对符杌丰居瘁合要求的数据中的telphone字段进行更新SQL> create table T_temp(id int, telphone varchar2(20));Table created.Elapsed: 00:00:00.05SQL>
5、通过PLSQL Developer工具插入要更新的数据先执行select*from T_temp forupdate;这时候会看到查询出来的结果那里有个锁,点击打开(如下图)
6、再点击左边那个星号*(如下图)
7、将要更新的数据在excel表格里面按T_temp表的格式处理,第一列留空(如下图)说明:这里假设要更新ID为1到1000的人的telphone为88888888
8、选中除列名以外的区域,复制(如下图)
9、回到PLSQL Developer,点击黑色小三角形,进行全选(如下图)
10、将刚刚复制的数据进行粘贴(如下图)
11、点击绿色的√:记入改变(如下图)
12、进行commit后查询T_temp表,数据已成功插入(如下图)
13、说明:也可以用pl/sql工具里面的文本导入器(在这先不介绍)。通过关联临时表对目标表进行update更新关妗哳崛搿键性的update语句UPDATE T_test t1SET t1.telphone = (SELECT t2.telphone FROM T_temp t2 WHERE t2.id = t1.id)WHEREEXISTS (SELECT1 FROM T_temp t3 WHERE t3.id = t1.id);
14、然后再次查询表T_test
15、全部数据已按要求更新完毕!最后不要忘了将临时表T_temp删除,以免造成资源浪费