Oracle spool导出到text后每列的字段名称是否可以显示完整的字段名,而非截断的

[复制链接]
查看11 | 回复5 | 2013-2-25 14:51:24 | 显示全部楼层 |阅读模式
本帖最后由 hanyush 于 2014-9-16 11:11 编辑
我用spool导出text后,会得到以下结果,Request Shipment Date,包括年月日,但每列的字段名都别截断了,无法识别这列是什么名字,虽然可以通过类似于column Request Shipment Date fomart A22来实现显示每列完整的字段。但问题是,在这个样例里是没几个字段,而正式的环境里,可能有几十个字段,每个日期都要添加年月日,周,季度,如果每个都要通过column 设置下格式,会比较麻烦。
想请教的是:有无一个参数或者一个办法,能将select语句里所有的字段,每列的字段名完整的显示出来?导出的相关数据不能被截断。
如果没有的话,那只能按需要给字段做column来设置长度了
看导出来的数据,似乎是根据数据宽度来显示的,而不是根据字段名宽度,当然就算根据字段名宽度导出,也不能把数据截断了。

spool语句:
set echo off
set feedback off
set newpage none
set pagesize 0 embedded on
set linesize 1025
set trims on
set heading on
set timing off
SET SPACE 0
set colsep |
SPOOL d:\spool.txt
select substr(t$item,1,23) item,
TO_CHAR(new_time(lmdt,'ydt','gmt'),'DD/MM/YYYY') "Request Shipment Date", --->"from Contract Date"
TO_CHAR(new_time(lmdt,'ydt','gmt'),'YYYY') "Request Year",
TO_CHAR(new_time(lmdt,'ydt','gmt'),'MM') "Request Month",
TO_CHAR(new_time(lmdt,'ydt','gmt'),'DD') "Request Day",
TO_CHAR(new_time(lmdt,'ydt','gmt'),'IW') "Request Week",
TO_CHAR(new_time(lmdt,'ydt','gmt'),'Q') "Request Quarter"
from tableA
;
SPOOL OFF

出来的结果:
ITEM|Request Sh|Requ|Re|Re|Re|R
11009A0001|24/06/2013|2013|06|24|26|2
10400B0001|01/04/2013|2013|04|01|14|2
11009C0001|03/06/2013|2013|06|03|23|2

需要的得到是是这样的
ITEM|Request Shipment Date |Request Year|Re|Request Day|Request Week|Request Quarter
11009A0001|24/06/2013
|2013|06|24 |26
|2
10400B0001|01/04/2013
|2013|04|01 |14
|2
11009C0001|03/06/2013
|2013|06|03 |23
|2


回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
可以这样的,set heading off
然后 多写一个select'ITEM|Request Shipment Date |Request Year|Re|Request Day|Request Week|Request Quarter' from dual;
在写你的那个select
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
本帖最后由 hanyush 于 2014-9-16 11:57 编辑
asamiya310 发表于 2014-9-16 11:22
可以这样的,set heading off
然后 多写一个select'ITEM|Request Shipment Date |Request Year|Re|Reque ...

是这样的意思吗?执行了下,好像可行。
select'ITEM|Request Shipment Date |Request Year|Re|Request Day|Request Week|Request Quarter' from dual;
select substr(t$item,1,23) item,
TO_CHAR(new_time(lmdt,'ydt','gmt'),'DD/MM/YYYY') "Request Shipment Date", --->"from Contract Date"
TO_CHAR(new_time(lmdt,'ydt','gmt'),'YYYY') "Request Year",
TO_CHAR(new_time(lmdt,'ydt','gmt'),'MM') "Request Month",
TO_CHAR(new_time(lmdt,'ydt','gmt'),'DD') "Request Day",
TO_CHAR(new_time(lmdt,'ydt','gmt'),'IW') "Request Week",
TO_CHAR(new_time(lmdt,'ydt','gmt'),'Q') "Request Quarter"
from tableA
;
复制代码
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
对于varchar2类型的字段,可以这样
column 字段名 format a30
对于NUMBER型的字段,百度下
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
列名可以考虑使用缩写
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
你看sqluldr2能否输出完整
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行