1、在UNIX下运行如下角本,也可以在数据库中手工执行
---------------------
sqlplus –s user/passwd << EOF
set colsep |;
set echo off;
set feedback off;
set heading off;
set pagesize 0;
set linesize 1000;
set numwidth 12;
set termout off;
set trimout on;
set trimspool on; spool tmp.txt;
select * from emp;
spool off;
exit
EOF
---------------------
注意:一定要用spool,如果在命令行中直接用>tmp.txt 可能会造成数据缺失,至少在Unixware7 上如此。
假定某域是char(n),如中间出现回车\n,则下载出的这条记录的格式将会错乱,不宜采用此方法。2、将导出的数据传到WINDOWS平台上,使用EXECL打开数据,或者使用C写个程序,将文件中的列分隔符由“|”改为“TAB”,并去掉多余的空格。3、使用SQL SERVER的BCP命令导入上述文件
bcp 导入表名 in 导入文件名 -Uuser -Ppasswd -c

解决方案 »

  1.   

    1、登录ORACLE数据库,然后执行如下命令:set colsep |;
    set echo off;
    set feedback off;
    set heading off;
    set pagesize 0;
    set linesize 1000;
    set numwidth 12;
    set termout off;
    set trimout on;
    set trimspool on;spool 存储文件名;
    select * from 要导出的表名;
    spool off;
    exit
    2、现在,ORACLE中某一表的内容就已经导入到上述提到的“存储文件名”文件中了;3、由于文件中的列分隔符设定为“|”,需要使用EXECL把开该文件,将列分隔附替换成“TAB”,并使用TRIM()函数去掉列中的空格4、在SQL SERVER中建立一个与ORACLE中结构相同的表。5、使用SQL SERVER自带的BCP命令导入数据。
    bcp 导入表名 in 导入文件名 -U用户名 -P口令 -c