比如:两张表A、B,从A表导入到B表,现在有两种想法,第一种呢:删除表满足条件数据,然后插入数据,这样的话,delete语句会在oracle产生多余空间吧,第二种呢,不需要导入(A表中已经导入到b表,而且,记录没有做任何改变的数据),意思是倒入增加、修改的数据,同时还得删除a表删除数据,如果一条一条记录判断,同时,一列一列项内容判断,是不是运行太慢了?现在不知道哪种方法比较合理?想问问大家,有没有这方面的经验?还有没有更好的方法?

解决方案 »

  1.   

    两种方法都可以如果数据量大的话就先delete吧,然后insert如果不大就直接选择要插入的再插吧
      

  2.   

    关键是看数据量?
    insert into 表1 select * from 表2 where 字段 not in( select 字段 from 表1 where 条件)
      

  3.   


    merge into table1 t1 using table2 t2
      on (t1.column1=t2.column1 and ...) --两个表的关联
      when matched then 
          update set t1.column2=t2.column2 and ...;
      when not matched then 
          insert (column1,...) values(t2.column1,...);