创建测试表create table base_users( userid varchar2(16), username varchar2(32), passwd varchar2(16))tablespace cat_data;
采用一条一条插入的方式create or replace procedure insert_data_one_by_one(n in number)as currentId number(16) := 0; l_userid varchar2(16); l_username varchar2(32);
sqltext varchar2(256);
begin
dbms_output.put_line("begin ..." || to_char(current_timestamp, "HH24:MI:SSxFF")); sqltext := "insert into base_users(userid, username, passwd) values(:userid, :username," || "111111 )";
loop
currentId:=currentId + 1;
l_userid:= to_char(currentId);
l_username:= to_char(18600000000 + currentId); execute immediate sqltext using l_userid, l_username;
exit when currentId >= n;
end loop;
commit;
dbms_output.put_line("end commit ..." || to_char(current_timestamp, "HH24:MI:SSxFF"));
end insert_data_one_by_one;
/
采用批量插入的方式create or replace procedure insert_data_bulk(n in number)as i int; tmp_userid number; tmp_username number; type useridArray is table of varchar2(16) index by binary_integer; type usernameArray is table of varchar2(32) index by binary_integer; puserid useridArray; pusername usernameArray;begin dbms_output.put_line("begin ..." || to_char(current_timestamp, "HH24:MI:SSxFF")); tmp_userid := 1; tmp_username := 18600000000; for i in 1 .. n loop puserid(i) := tmp_userid; pusername(i) := tmp_username; tmp_userid := tmp_userid + 1; tmp_username := tmp_username + 1; end loop; forall i in 1 ..n insert into base_users(userid, username, passwd) values(puserid(i), pusername(i), "111111"); commit; dbms_output.put_line("end ..." || to_char(current_timestamp, "HH24:MI:SSxFF"));endinsert_data_bulk;/
测试1千万条数据的插入SQL>set serveroutput onSQL>begininsert_data_one_by_one(10000000);end;/begin ...22:14:01.572928000
end commit ...22:20:43.911104000 SQL>truncate table base_users;
SQL>begininsert_data_bulk(10000000);end;/begin ...22:25:31.497810000
end ...22:27:23.801515000
更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle 快速load数据的方法--SQL*Loader一个简单的Oracle存储过程测试数据插入效率相关资讯 Oracle数据库基础教程
- 在Oracle数据库中插入含有&符号的 (03/06/2013 09:20:14)
- Oracle 执行计划更改导致数据加工 (02/13/2013 14:45:04)
- 判断Oracle Sequence是否存在 (02/13/2013 14:32:26)
| - Oracle数据库中无法对数据表进行 (02/26/2013 14:24:58)
- Oracle 在同一台主机上建立用户管 (02/13/2013 14:40:58)
- Oracle em 无法启动,报not found错 (02/13/2013 14:29:48)
|
本文评论 查看全部评论 (0)