用MSSQL自带的DTS即可,先要在MSSQL服务器上装一个Oracle的客户端就可以了,
导的过程中可能会有一些错误发生,这主要与MSSQL设计的表结构有关,不过进行一
定的手工处理,一般都可以顺利导进去,我导过一个三百多个表,8G的数据到
Oracle10G中去。

解决方案 »

  1.   

    自己先在ORACLE上手工建好表(两个数据库有部分数据类型不匹配),然后用SQLSERVE的DTS工具导数据,
    不过存储过程,触发器什么的,可能要重写
      

  2.   

    1、在DOS下使用数据库自带bcp命令将SQL SERVER中的数据以表为单位,导出成文本文件;
    2、在ORACLE中对就建表;
    3、在DOS下使用数据库自带sqlldr命令重新导入数据。
    注意,不同版本的sqlldr命令名称并不一样,例如:UNIX下叫sqlldr、WIN下叫SQLLDR80.EXE。举一个导入的例子,以供参考:
    ▲从文件中加载大量数据
    一、
    ①命令文件:data_load.bat
    SQLLDR80.EXE ^ /*^ 批处理文件行延续符,所有参数必须在同一行中*/
    userid=user ^/*用户名*/
    control='E:\temp\oracle\tb_src.ctl' ^ /*存放数据的文件名称*/
    log='e:\temp\oracle\tb_src.log' ^
    bad='e:\temp\oracle\tb_src.bad' ^
    rows=1000 /*每加载1000行执行一次commit *//**************************************
    UNIX下,注意在同一行上
    sqlldr control='$HOME/sql/tb_phone_no/tb_phone_no.ctl' log='$HOME/sql/tb_phone_no/tb_phone_no.log' bad='$HOME/sql/tb_phone_no/tb_phone_no.bad' rows=1000 userid=user 
    **************************************/②数据文件:tb_src.ctl
    load data
    infile *
    appendinto table tb_src /*向tb_src表中加载数据*/
    fields terminated by " " optionally enclosed by '"' /*指出列之间的分隔符是TAB*/
    (tb_id,
    phone_no) /*列名,如果有日期,必须指明格式,例:列名 date(11) “dd-mon-yyyy”*/BEGINDATA
    1 13132520000
    2 13132520001
    3 13132520002
    4 13132520003
    5 13132520004
    6 13132520005
    7 13132520006
    8 13132520007
    9 13132520008
    10 13132520009③更新数据字典
    SQL> analyze table tb_src compute statistics;