begin
for i in 1..1000000 loop
  insert into table_name values(i,'data'||i,'string '||i);
  if mod(i,10000)=0 then
    commit;
  end if;
end;
/

解决方案 »

  1.   

    declare
    i number:=1;
    begin
    for i in 1..1000000 loop
    insert into table_name values(.....);
    if mod(i,500)=0 then
    commit;
    end if;
    end if;
      

  2.   

    declare
    i number:=1;
    begin
    for i in 1..1000000 loop
    insert into table_name values(i   ,  a ,      b );
    if mod(i,500)=0 then
    commit;
    end if;
    end if;
      

  3.   

    给你介绍个工具quest的DataFactory
    可以指定生成数据类型,方式等。
      

  4.   

    用sqlldr最快了
    用如下程序,程序名为test.pl#!/usr/bin/perl
    for($id=1; $id<=1000000; $id++){print "$id\|name|score\n";}该程序可以在UNIX/LINUX上直接运行。。
    perl test.pl >test.txt
    这样会把1000000条记录打印到文件test.txt,很快的,要不了半分钟,然后用sqlldr导入数据库
      

  5.   

    ATGC(这一生受了很多委屈吃了很多苦。。)说得不错,最好用外部程序程序先生成数据,再导入。我以前也是在存储过程里做,先用存储里生成数据插入到临时表,再把数据打乱插入到正式表,那个速度慢得受不了。
      

  6.   

    使用系统表
    dba_objects,dba_extents,数据不够就让他们做个连接,笛卡儿也行啊,主要限制结果函数哦.