oralce有一张大表数据量30w以上. table_name现在我要将一定数量数据插入到table_name表中 如果表中存在就做更新 如果不存在就插入有什么好的办法来实现这个功能?

解决方案 »

  1.   

    方法1:merge into
    方法2:先update後insert30算很少的數據了,關聯列建索引
      

  2.   


    merge into ?谁做过测试没有 如有 a 和b 结构相同 如何使用merge into 把 a 插入到 b
      

  3.   

    一个merge into的例子。从表tj_test merge到 tj_test1.create table tj_test(id number,name varchar2(20),age number);
    insert into tj_test values (1,'jan',23);
    insert into tj_test values (2,'kk',22);
    insert into tj_test values (3,'joe',27);create table tj_test1 as select * from tj_test where 1=0;
    insert into tj_test1 values (1,'jlk',23);merge into tj_test1 tt1 using tj_test tt on (tt1.id=tt.id)
      when matched then
        update set tt1.name=tt.name, tt1.age=tt.age
      when not matched then
        insert values(tt.id, tt.name, tt.age);
      

  4.   


    从表到表好说 但是从excel到表好像没有这么快 批量很慢
      

  5.   

    那你就先把Excel导入临时表。然后merge into
      

  6.   

    问一个比较弱智的问题, 数据源 表 A和目的表B整理出一个 数据和A遍完全一样的表A1,然后就把 比较  B和A1 的关键字, 只是将存在于B 而A1 没有的数据,插入到A1,效果应该是一样, 最后再来个rename 这样做, 可不可以