Oracle假脱机文件到.txt文件。标题选项

时间:2014-04-29 18:35:45

标签: oracle

我试图将Oracle文件假脱机到.txt文件。我想显示标题,但我正在做一个TRIM以消除额外的空间和'TRIM'正在标题中显示,当我有更多字段时,某些标题不会显示,因为它太长了。如何消除字段之间的空格或让我的标题只显示字段名称?

set newpage none;
set space 0;
set feedback off; 
set linesize 5000;
set pagesize 50000; 
set echo off;
set termout off;
set trimspool on;
set colsep '|';
set heading on;
set headsep on;
set underline off;
set trim on;

spool /dch/sap_load/ZPONE_MCC/QE1/mock3/test_export.txt


SELECT
TRIM(    MATNR                  )|| '|' || 
TRIM(    WERKS                  )|| '|' || 
TRIM(    STLAN                  )|| '|' || 
TRIM(    DATUV                  )|| '|' || 
TRIM(    BMEIN                  )|| '|' || 
TRIM(    BMENG                  )|| '|' ||
TRIM(    STLAL                  )|| '|' ||
TRIM(    STLST                  )|| '|' ||
TRIM(    ZTEXT                  )|| '|' ||
TRIM(    AENNR                  )|| '|' ||
TRIM(    REVLV                  )|| '|' ||
TRIM(    LABOR                  )
FROM CLS_MCC1XX_BOM_HEADER;

这是我的输出的样子: enter image description here

谢谢, MARCIE

2 个答案:

答案 0 :(得分:0)

通过连接修剪后的字符串,最终输出一个字段。

一种选择就是重命名该字段:

SELECT
TRIM(    MATNR                  )|| '|' ||
TRIM(    WERKS                  )|| '|' ||
TRIM(    STLAN                  )|| '|' ||
TRIM(    DATUV                  )|| '|' ||
TRIM(    BMEIN                  )|| '|' ||
TRIM(    BMENG                  )|| '|' ||
TRIM(    STLAL                  )|| '|' ||
TRIM(    STLST                  )|| '|' ||
TRIM(    ZTEXT                  )|| '|' ||
TRIM(    AENNR                  )|| '|' ||
TRIM(    REVLV                  )|| '|' ||
TRIM(    LABOR                  )
AS 'whatever heading you want'
FROM CLS_MCC1XX_BOM_HEADER;

答案 1 :(得分:0)

您可以使用Matthew Strawbridge建议的列别名,但您必须将其用双引号括起来,而不是单引号:

SELECT ...
AS "MATNR|WERKS|STLAN|DATUV|BMEIN|BMENG|STLAL|STLST|ZTEXT|AENNR|REVLV|LABOR"
FROM CLS_MCC1XX_BOM_HEADER;

更重要的是,你受标识符的最大长度限制,30个字符,所以这在这里不起作用。

另一种选择是改为使用假的标题:

set heading off
prompt MATNR|WERKS|STLAN|DATUV|BMEIN|BMENG|STLAL|STLST|ZTEXT|AENNR|REVLV|LABOR
SELECT ...
FROM CLS_MCC1XX_BOM_HEADER;

使用set heading off(或set pagesize 0)来抑制真实无用的标头,而是使用prompt SQL * Plus命令编写所需的文本。

你也可以select '<your header>' from dual而不是prompt,但我发现它更清洁。