请教高手:9i中用sqlplus来spool出来的数据格式怎么和8i的不一样?

[复制链接]
查看11 | 回复7 | 2011-6-1 15:32:28 | 显示全部楼层 |阅读模式
我原来的一个程序(8i)用sqlplus来从客户端spool数据,再在服务端用sqlldr导入。因为是同时将多个表的数据spool到一个文件中,sqlldr的ctl必须用position来表示位置。
现发现程序由8i移植到9i后,sqlplus spool出来的数据格式不对了,这样就导致服务端sqlldr的ctl文件中的位置偏移。
请问有哪个选项可以让9i的sqlplus按8i的格式来输出数据?(因为程序同时在8i和9i上都有使用)
回复

使用道具 举报

千问 | 2011-6-1 15:32:28 | 显示全部楼层
没听说过!你可以把你要求的格式写出来,说不定只需要设置些set linesize ,col format之类的东西能帮你解决掉!
回复

使用道具 举报

千问 | 2011-6-1 15:32:28 | 显示全部楼层
导出脚本如下:
set echo off;
set head off;
set feedback off;
set verify off;
set term off;
set trims on;
set numwidth 20;
set newpage none;
spool &1;
set linesize 2000;
select * from t1
where date=&2;
select * from t2
where date=&2;
....
set spool off;
set num 10;
set newpage 1;
set trims off;
set term on;
set verify on;
set linesize 80;
set feedback on;
set head on;
set echo on;
exit;
原来在8i下用都好的,但移到9i下时,spool出来的字段都变长了。
回复

使用道具 举报

千问 | 2011-6-1 15:32:28 | 显示全部楼层
没听说过!你可以把你要求的格式写出来,说不定只需要设置些set linesize ,col format之类的东西能帮你解决掉!
回复

使用道具 举报

千问 | 2011-6-1 15:32:28 | 显示全部楼层
我的表只有两种类型:varchar2和number,导出时用set numwidth 20设定了number型为20位,varchar2型就是定义的长度。
8i下试过很多台机子,都是好的;到了9i下面,导出来的两种类型都变长了。
回复

使用道具 举报

千问 | 2011-6-1 15:32:28 | 显示全部楼层
不明确
不应该啊 设置格式的
set echo off;
set head off;
set feedback off;
set verify off;
set term off;
set trims on;
set numwidth 20;
set newpage none;
spool &1;
set linesize 2000;
这些东东不会有版本差异啊
看看是不是字符集的问题
回复

使用道具 举报

千问 | 2011-6-1 15:32:28 | 显示全部楼层
贴个8i出来的结果 和9i下的结果,看看!是不是有别的原因呢!!!
回复

使用道具 举报

千问 | 2011-6-1 15:32:28 | 显示全部楼层
问题搞清楚了,是字符集的关系,跟oracle的版本没关系。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行