一般咱们产生批量数据就是通过循环insert语句,我们这里也差不多,唯一不一样的就是,这里利用的是原来表中的数据,插入的效率要比一般的高,下面举例:
比如数据库中有表test:字段有a,b,c三个,自动a为主键,abc都是int型(呵呵,是不是太简单了)
1.插入一条数据
- insert into test values(1,2,3);
2.创建一个序列
- create sequence test_seq start with 2 increment by 1 nomaxvalue nocycle cache 10;
3.写一个循环程序
- declare
-
maxrecords constant int:=1000;
-
i int :=1;
-
begin
-
for i in 1..maxrecords loop
- insert into test select test_seq.nextval,b,c from test;
-
end loop;
-
dbms_output.put_line(' 成功录入数据! ');
-
commit;
-
end;
好了,现在运行你写的程序,你会发现他要运行好大一会你可以将maxrecords改小一点.
他的运行过程是这样的,在第一部时候你在数据库中插入了一条记录,运行程序时:
i=1,数据库中将插入:
2,2,3
i=2,数据库中将插入:
3,2,3
4,2,3
i=3,数据库中将插入:
5,2,3
6,2,3
7,2,3
8,2,3
i=.....
规律看出来没有,每循环一次就将数据库全部原数据插入一次,这样数据库数据时按照2的幂来增加的,刚开始也许数据还不大,循环几次后就很大很大了,呵呵。
阅读(1188) | 评论(0) | 转发(0) |