Oracle表结构如下:
    ID NUMBER,
    DOMAIN VARCHAR2(50),
    IP LONG求存储过程, 插入一千万条数据, 谢谢大家!!!!!

解决方案 »

  1.   

    为什么要用存储过程呢?还有你说的一千万数据从哪来的?insert /*+ append */ into A  select * from b;
      

  2.   

    在这里,需要 补充一下
     id 是 自增, 1,2,3,4,5,6.....
     ip是从3232238953起, 自增度为10
     domain www.a_1.com,www.a_2.com,www.a_3.com....,也是自增的
     3232238953,3232238963,3232238973,3232238983...
     你们懂我的意思吧??
     谢谢大家啊
      

  3.   

    SQL> create table t_test
      2  (ID NUMBER,
      3    DOMAIN VARCHAR2(50),
      4    IP LONG);
     
    Table created
     
    SQL> 
    SQL> insert into t_test
      2  select rownum,'www.a_'||rownum||'.com',3232238943+10*rownum from dual
      3  connect by rownum<=10000000;
     
    10000000 rows inserted
     
    SQL> commit;
      

  4.   


    create  table tb(
                      ID NUMBER,
                      DOMAIN VARCHAR2(50),
                      IP LONG
    ) NOLOGGING ;--procedure
    CREATE OR REPLACE PROCEDURE p_insert
    IS
    BEGIN 
        FOR i IN 1..10000000 LOOP
            insert /*+append*/ into tb VALUES(i,'www.a_'||i||'.com',3232238953+(i-1)*10);   --执行插入
        END LOOP; 
    END;
      

  5.   

    SQL> create table t_test
      2  (ID NUMBER,
      3    DOMAIN VARCHAR2(50),
      4    IP LONG);
     
    Table created
     
    SQL> 
    SQL> insert into t_test
      2  select rownum,'www.a_'||rownum||'.com',3232238943+10*rownum from dual
      3  connect by rownum<=10000000;
     
    10000000 rows inserted
     
    SQL> commit;
      

  6.   

    create  table tb(
                      ID NUMBER,
                      DOMAIN VARCHAR2(50),
                      IP LONG
    ) NOLOGGING ;CREATE OR REPLACE PROCEDURE p_insert
    IS 
    num NUMBER;  --批量提交参数
    BEGIN 
        FOR i IN 1..10000000 LOOP
            insert /*+append*/ into tb VALUES(i,'www.a_'||i||'.com',3232238953+(i-1)*10);   --执行插入
            num:num+1;
            IF Mod(num,100)=0 THEN   --一百笔提交一次,分批量提交,及时释放redo log buffer
               COMMIT;
            END IF; 
        END LOOP; 
    END;alter table tb LOGGING
      

  7.   

    上面少了一个等号,不好意思
     num:=num+1;
      

  8.   

    上面少了一个等号,不好意思
     num:=num+1;