小弟要把表A的数据插入到表B,因为数据量大,所以想分批进行插入。
譬如A表有数据10000万条。
偶希望实现,通过10次来完成插入工作。
就是第一次查1000万条。无错的话,然后第二次插入后1000万条。
10次以后完成全部插入。
急等

解决方案 »

  1.   

    用rowid和rownum三层select嵌套查询,速度比较快
      

  2.   

    偶然想到的一种方式,不妨试一下
    首先找到最大最小的rowid
    select min(rowid),max(rowid) from tbname ;
    然后,通过结果计算差值,找到那9个点(rowid号)最后通过rowid来检索插入,效率应该最高了
    insert into tbname_new select * from where rowid between xxx and yyy;
      

  3.   

    试试这个时间多少?
    insert into B 
      (Select * from A where rowid in 
           (SELECT id FROM 
                (SELECT C.rowid id, rownum t FROM 
                     (SELECT rowid FROM A) C 
                 WHERE rownum <= 20000000
                 ) 
            WHERE t > 10000000 
            )
      );
      

  4.   

    实现方法:
    //目的:80条一组 共4组SQL> select count(*) from tt;  COUNT(*)
    ----------
           320已用时间:  00: 00: 00.10
    SQL> select max(rowid),min(rowid) from tt;MAX(ROWID)         MIN(ROWID)
    ------------------ ------------------
    AAAGJYAABAAAIWdAE1 AAAGJYAABAAAIWcAAA已用时间:  00: 00: 00.20第一个rowid:
    SQL>  select max(rid) from (
      2   select rowid as rid from tt where rowid>='AAAGJYAABAAAIWcAAA' and rownum<=80);MAX(RID)
    ------------------
    AAAGJYAABAAAIWdABF已用时间:  00: 00: 00.10第二个
    SQL> select max(rid) from (
      2  select rowid as rid from tt where rowid>'AAAGJYAABAAAIWdABF' and rownum<=80);MAX(RID)
    ------------------
    AAAGJYAABAAAIWdACV已用时间:  00: 00: 00.10SQL> select max(rid) from (
      2  select rowid as rid from tt where rowid>'AAAGJYAABAAAIWdACV' and rownum<=80);MAX(RID)
    ------------------
    AAAGJYAABAAAIWdADl已用时间:  00: 00: 00.10
    SQL> select max(rid) from (
      2  select rowid as rid from tt where rowid>'AAAGJYAABAAAIWdADl' and rownum<=80);MAX(RID)
    ------------------
    AAAGJYAABAAAIWdAE1已用时间:  00: 00: 00.10任意去两个连续的rowid点,看是否是80条记录。SQL> select count(*) from tt where rowid>= 'AAAGJYAABAAAIWdACV' and rowid <'AAAGJYAABAAAIWdADl';  COUNT(*)
    ----------
            80已用时间:  00: 00: 00.10
    SQL> 成功!
      

  5.   

    http://www.cnoug.org/viewthread.php?tid=16060
      

  6.   

    oh,谢谢大家帮忙,昨天比较忙,拿现在就结帖子了。thanks to all