小弟要做一个数据迁移工作:实现思路如下:
想通过SQL脚本直接做,首先查询出要迁移的数据,然后再连接另外一个数据库,将数据插入到该数据库中。
现在主要的问题是:我不知道如何将数据直接从这个数据库插入到另外一个数据库里面,求代码。

解决方案 »

  1.   

    Oracle的exp/expdb和imp/impdb,你用过没有?
    前者是从源数据库导出几乎所有Object的命令;(生成dmp文件)
    后者是把dmp文件里的内容,导入到目标数据库的命令。
      

  2.   

    =====================
    优点:简单灵活,适合多次数据同步
    缺点:一次同步数据量不大,效率一般
    =====================
    原数据库SRC_A,用户USERA 密码PWDA  
    目标数据库DIS_B,用户USERB 密码PWDB 在DIS_B 的USERB上创建到 dblink B.TO.A
    create database link B.TO.A
      connect to USERA identified by PWDA
      using 'SRC_A';在SRC_A 的USERB上执行下面语句,会生成一个脚本,保存下来,拿到DIS_B 的USERB上执行。
    DIS_B上没有表结构时用
    select 'create table '||table_name||' as select * from '||table_name||'@B.TO.A
    ;'
    from user_tables;
    如果DIS_B上有表结构,用下面的。select sq 
    from (select 'insert into '||table_name||'  select * from '||table_name||'@B.TO.A
    ;' sq ,rownum*2-1 rid
    from user_tables
    union all
    select 'commit;' sq ,rownum*2 rid
    from user_tables )
    order by rid;
      

  3.   

    为什么要用SQL脚本直接做呢?(请说明理由)
    可以使用Oracle的逻辑备份与数据导出导入功能。(即EXPDP和IMPDP工具)
      

  4.   

    我主要是迁移某些表中的部分数据,所以像exp/imp就用不到了。。
    ETL有没实际的例子,我可以参考一下?
      

  5.   

    因为我觉得这个工作相对比较小,用SQl可以搞定。。不需要搞得那么隆重。谢谢!
      

  6.   

    都是Oracle数据库,将老库里面的数据迁移到新库里面
      

  7.   

    不想用exp/imp,那就写SQL语句插入吧inser into ta 
    select * from orcdb.tb 
      

  8.   

    直接用DBLINK,然后SQL操作即可
      

  9.   

    简单的 就是上面说的 dblink + insert。
    实际中,还是要考虑一下,一次性/非一次性、数据量大/小、网络环境 稳定/不稳定 等等
    自动化是好的,但要实现自动化,还需要考虑很多细节,加入更多的日志输出,以便跟踪修正。
      

  10.   

    跨网段的数据库的话orcdb怎么写?我两台数据库的sid是一样的。
      

  11.   

    如果你是A数据库的A表,导入到B数据库的B表(A表和B 表结构相同)
    ((步骤1,2,都在B数据库操作)
    1.在B数据库中建立DBLINK
            create  database link db
            connect to A库用户名 identified by  A库用户密码
            using 数据库名2.把A库的数据插入B库
    insert into B表
    select * from A表@db
      

  12.   

    导出使用 exp ,用 query 选项过滤出你要导出的行集后,再用imp 导入,比写sql同时连两个库可靠。
      

  13.   

    我曾经写过mssql到oracle数据库的迁移,如果都是oracle的话那就直接建立dblink 然后查到需要迁移的数据库的表名,然后通过到你需要的oracle数据库中。