我在A库有一个a表
现在想把a表的数据移到B库的b表去但是a表里的字段名或字段数和b表的不完全一样
请问我应该怎么个导入法?我现在用的是pl/sql导出表,然后手动改完字段后,再insert into到b表里,可是这样感觉太慢,有没有比较方便的方法?像这种语法能解决吗?
INSERT INTO 表A(字段名1, 字段名2, ……)  SELECT (字段名1, 字段名2, ……) FROM 表B

解决方案 »

  1.   

    1.使用DBLINK
    2.使用ora_loader
      

  2.   

    INSERT INTO 表A(字段名1, 字段名2, ……)  SELECT (字段名1, 字段名2, ……) FROM 表B@db_link
      

  3.   

    请问能大致说下使用dblink的步骤吗?我没用过这东西,不太清楚用法
      

  4.   

    网上找到的,仅供参考:如何创建oracle dblink 
    数据库之间的链接建立在DATABASE LINK上。要创建一个DB LINK,必须先 
    在每个数据库服务器上设置链接字符串。 
      
      1、  链接字符串即服务名,首先在本地配置一个服务名,地址指向远程的数据库地址,服务名取为将来你要使用的数据库链名: 
      
    2、创建数据库链接, 
    进入系统管理员SQL>操作符下,运行命令: 
      
    SQL>create public database link beijing connect to scott identified by tiger using 'tobeijing'; 其中: beijing是要创建的dblink的名称,   using ‘tobeijing’ tobeijing是本地服务名的名称
      
    则创建了一个以scott用户和北京数据库的链接beijing,我们查询北京的scott数据: 
      
    SQL>select * from emp@beijing;  
      
    这样就可以把深圳和北京scott用户的数据做成一个整体来处理。 
      
    3、建立同义词,为了使有关分布式操作更透明,ORACLE数据库里有同义词的对象synonym 
      
    SQL>create synonym bjscottemp for emp@beijing; 
      
    于是就可以用bjscottemp来替代带@符号的分布式链接操作emp@beijing。 
      
    4、查看所有的数据库链接,进入系统管理员SQL>操作符下,运行命令: 
      
    SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';  
    5、查看数据库连接
    sql> select owner, db_link from dba_db_links; 
    ower    db_link
    public   TEST.US.ORACLE.COM6、删除数据库连接
    先从第5步中查看数据库连接,取得其db_link的名称
    sql>drop public database link TEST.US.ORACLE.COM
    数据库连接巳丢弃
      

  5.   

    b库执行:
    CREATE  PUBLIC  DATABASE LINK bk_link  CONNECT TO a库用户名 IDENTIFIED BY a库用户名的密码 USING 'b库可以访问a库的tnsnames.ora中tns名' ;INSERT INTO A(col1,col2,col3....) SELECT col1,col2,col3.... FROM B@bk_link;
      

  6.   

    a和b表弄反了.改下b库执行:
    CREATE  PUBLIC  DATABASE LINK bk_link  CONNECT TO a库用户名 
       IDENTIFIED BY a库用户名的密码 USING 'b库可以访问a库的tnsnames.ora中tns名' ;INSERT INTO b(col1,col2,col3....) SELECT col1,col2,col3.... FROM a@bk_link;
      

  7.   

    谢谢oracledbalgtu,flg_inwind 两位的解答,也谢谢hebo2005的回答,谢谢各位