目前有一张表,数据量大概9亿左右,要把里面的数据迁移到同库下的另一张表里,请问应该怎么弄?
想建立一个事务,每insert进去1W条就提交一下,应该怎么写?

解决方案 »

  1.   

    首先要清楚,事务是自动开始的,我们只能控制事务的结束。INSERT INTO B SELECT * FROM A;让它执行罢。
      

  2.   

    如果另外一个表target_table数据不大的话,建议:
    1.用 create table as 产生一张表 new_table (最好加上nologing)或者将数据库 或者表空间设置为 nologing
    2.将原表target_table的数据 插入到new_table 
    3.重建索引 
    4.drop 原表target_table
    5.改名new_table--》target_table  索引改名  (应为index的名字是不能重复的 这个有点恶心)
      

  3.   

    同库下的不同表之前的数据迁移,相对较简单,考虑到你数据量大,自己写个PLSQL,自动控制事务大小,批量提交。
      

  4.   

    bulk collect into …… limit
    forall
    批量提交
      

  5.   

    使用存储过程,(order by排序,使用rownum控制流程)
    insert into  t2 select * from t1//我测试了一下,每次执行会覆盖以前的插进来的数据