简言之 A表 全部数据插入到B表,假设结构一样
select * from A 的结果集 插入到B表
我是应该取得两个conn 一个专门做select操作 一个专门用事务控制 insert操作呢
还是就一个conn 同时select,insert呢
 虽然两者好像都行 但是在复杂的情况下 有什么说道吗
还有就是效率和安全性有什么说法吗

解决方案 »

  1.   

    如果用的是oracle,进行insert的时候,最好不要直接使用insert into ... select * from ...这样的语句,因为oracle的回滚段(rollback)会保存数据库变化的数据,如果一条语句执行的记录条数很多,会严重影响效率。所以最好采用游标将记录一条条的insert,并commit。
      

  2.   

    说的详细点好吗 
    还有我的意思其实是 select * from A 放在RS中
    然后while(rs)  在插入 呵呵
      

  3.   

    应该没有必要用两个阿,又不是两个DB?你的事务会滚其实就是指insert的操作。
    至于效率来说肯定是直接在数据库侧做inster into xxxx values (select ....from....) 这样的效率高,
      

  4.   

    用游标好了 
    这样处理 定义一个程序段
    DECLARE
      CURSOR C1 IS
        SELECT * FROM table 
      vrow table%rowtype 
    BEGIN
      OPEN C1;
      
     WHILE C1 %FOUND  LOOP
        insert into table1 values(vrow.s1,vrow,s2......)
       
      END LOOP;
      CLOSE C1;
    END;
      

  5.   

    select出来的记录一定要一条一条的insert,所以你需要写一个存储过程来完成这个过程。
      

  6.   

    看了上面的回答主要有两派,
    一派是要一个一个的插入
    一派是就是insert into xxx (select * from table)到底那个效率高呢 有没有什么说法
      

  7.   

    用一个conn就行
    insert的话最好综合一下,做个批处理还是比较好的