Chinaunix首页 | 论坛 | 博客
  • 博客访问: 117276
  • 博文数量: 42
  • 博客积分: 916
  • 博客等级: 准尉
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-16 10:01
文章分类

全部博文(42)

文章存档

2011年(42)

分类: 数据库开发技术

2011-06-09 16:22:03

一般咱们产生批量数据就是通过循环insert语句,我们这里也差不多,唯一不一样的就是,这里利用的是原来表中的数据,插入的效率要比一般的高,下面举例:
比如数据库中有表test:字段有a,b,c三个,自动a为主键,abc都是int型(呵呵,是不是太简单了)
1.插入一条数据
  1. insert into test values(1,2,3);
2.创建一个序列
  1. create sequence test_seq start with 2 increment by 1 nomaxvalue nocycle cache 10;
3.写一个循环程序
  1. declare
  2.         maxrecords constant int:=1000;
  3.         i int :=1;
  4.     begin
  5.         for i in 1..maxrecords loop
  6.             insert into test select test_seq.nextval,b,c from test;
  7.         end loop;
  8.         dbms_output.put_line(' 成功录入数据! ');
  9.         commit;
  10.     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的幂来增加的,刚开始也许数据还不大,循环几次后就很大很大了,呵呵。

阅读(1184) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~