我现在需要做一个功能,在oracle里把一张表里的数据导入到另外一张表(2个表的字段不一样),请问各位,如何实现?写存储过程吗?还是???

解决方案 »

  1.   

    大概知道,貌似是insert into B(字段) select A.字段 as B表字段 from A 坐等楼下解释
      

  2.   

    insert into B(字段) values (select  字段 from A )
    没环境,本来可以测试以下..
      

  3.   

    insert into B(字段) values (select 字段 from A )
    这样行吗?100W条左右的数据,这得需要多久?
      

  4.   

    字段类型不一样,就在select 字段 from A语句中,把字段转换成和B表一样的类型
      

  5.   

    这个要提升性能也就只能写存储过程了100W的数据量一般的机子还是能抗住的  如果数据量再大的话 估计就得考虑使用ETL工具了
      

  6.   

    insert into B(字段) values (select 字段 from A )
    你或者用export
      

  7.   

    100W数据对ORACLE来说很快就能插入的,一般不会引入什么性能问题(当然不考虑表类型索引等因素的影响)
    想要更快一点就可以使用使用直接路径加载,使用批量插入
      

  8.   


    单纯的100W数据插入不用使用存储过程,没意义,jdbc中提供的批量更新的api,和存储过程中使用forall语句批量更新是一样的
      

  9.   

    你可以查一下sqlldr
    是一种高速批量数据加载工具,有两种模式,传统路径使用用sql插入,直接路径可以直接格式化数据库快,绕过sql引擎,不产生undo信息,甚至redo
      

  10.   

    不一样的话,那不同的字段填充什么数据?这些字段是否可为空?建议提问题之前看一下:提问的慧
    http://community.csdn.net/IndexPage/SmartQuestion.aspx
      

  11.   

    字段不一样也行吗 用insert   select 
      

  12.   

    insert into tab(a,b,c) select a,b,c from tab2.....
      

  13.   


    这样肯定行,且是最好的方法,没有比他更简单更高效的了.如果要更快,加上nologging关键字需要的时间不好判断,这条sql语句的瓶颈在于IO. 要看你这100W条数据到底有多少字节,还有你的存储设备速度多快.
      

  14.   

    谢谢19楼火龙果大大的建议。
    比如说,我有A,B2张表,A表里有ID(int),name(varchar2),age(int)3个字段,这个表里面有100多W条数据,B表里有ID(int),name(varchar2),age(int),sex(char),adddate(date),operator(varchar2)6个字段,现在需要把表A的数据全部导入到表B里面,2张表只有ID为序列主键,其他字段均可为空。请问大家有什么好的方法没有?insert select除了这一种之外?
      

  15.   

    我这个是直接在PL/SQL中执行的,JDBC