将列标题从输出文本文件中删除

39

我想要在Oracle SQL Developer中创建一个平面文件(文本文件)来保存我的查询结果。

我已经通过使用SPOOL命令和脚本文本文件成功地创建了文本文件,但是我希望可以将每个列的标题从输出中删除。

我目前得到的输出如下:

Header000001 Header000002
------------ ------------
Adetail1     Bdetail1
Adetail2     Bdetail2
Adetail3     Bdetail3

但是,我想要得到以下输出:

Adetail1Bdetail1
Adetail2Bdetail2
Adetail3Bdetail3

我已经尝试过使用命令"set heading off",但是会出现以下消息:

"SQLPLUS COMMAND Skipped: set heading off".

这些是我输入的内容:

spool on; 
spool C:\SQLFiles\PSB_ATMLKP.txt; 
set newpage 0; 
set echo off; 
set feedback off; 
set heading off; 

select terminal_number, terminal_name from terminal_table; 

spool off;

你能告诉我们你发出的所有命令以及顺序吗? - Marco
打开 spool 功能; 将输出文件保存至 C:\SQLFiles\PSB_ATMLKP.txt; 设置 newpage 为 0; 关闭 echo 功能; 关闭 feedback 功能; 关闭 heading 功能; 从 terminal_table 表中选择 terminal_number 和 terminal_name 字段; 关闭 spool 功能。 - Marvin Wong
1
我已经为您编辑好了,放在了您的问题中。 - Marco
3个回答

48

SQLPLUS COMMAND Skipped: set heading off

这个信息很可能是因为您不是在SQL*Plus中执行它,而是使用一些基于GUI的工具。您正在在SQL Developer中使用SQLPlus命令。并非所有的SQL*Plus命令都能保证与SQL Developer兼容。

我建议您在SQLPlus中执行脚本,这样就不会出现问题。

您需要:

SET HEADING OFF

这将不会在输出中包含列标题。

或者,您也可以这样做:

SET PAGESIZE 0

使用 SQL Developer 版本 3.2.20.10:

spool ON
spool D:\test.txt
SET heading OFF
SELECT ename FROM emp;
spool off

enter image description here

文件成功创建,没有问题:

> set heading OFF
> SELECT ename FROM emp
SMITH      
ALLEN      
WARD       
JONES      
MARTIN     
BLAKE      
CLARK      
SCOTT      
KING       
TURNER     
ADAMS      
JAMES      
FORD       
MILLER     

 14 rows selected 

谢谢回复。我的版本是2.1.1.64。 - Marvin Wong
1
也许您可以使用SQL*Plus而不是SQL Developer。或者升级您的SQL Developer。如果这有帮助到您,请标记为已解决。 - Lalit Kumar B
这并没有回答问题。发帖者问如何使用SQL Developer来完成此操作。 - Terrible Tadpole
@TerribleTadpole,我认为你没有完整地阅读答案。我已经清楚地展示了如何在SQL Developer中完成它。OP也将其标记为答案。 - Lalit Kumar B

6

添加:

set underline off

回到SQL脚本的开头。

在我的SQL脚本中,我有:

SET TERMOUT OFF
set colsep |
set pagesize 0 
set trimspool on
set pagesize  0 embedded on
SET heading on
SET UNDERLINE OFF
spool file_path
-- your SQL here
spool off

请参考这本书了解相关的IT技术。


如果您只想要标题,但不需要下划线,那么这是有用的。否则,如果您只想要结果,就可以关闭标题。即:'设置 heading OFF' - Ewoks

0
一个完整的例子。 诀窍是 sqlplus -s
 sqlplus -s / as sysdba <<EOF
> SET TERMOUT OFF
> SET LINESIZE 1000
>  set echo off;
> set feedback off;
> set heading off;
> spool /tmp/killSession${esquema}.sql
> select 'alter system kill session'||' ''' || s.sid||','||s.serial# ||''' IMMEDIATE;'
> from v\$session s, v\$process p
> where s.username = '${esquema}'
> and p.addr (+) = s.paddr;
> EOF

alter system kill session '598,60705' IMMEDIATE;
alter system kill session '13,6279' IMMEDIATE;
alter system kill session '595,49129' IMMEDIATE;
alter system kill session '591,46591' IMMEDIATE;
alter system kill session '16,47283' IMMEDIATE;
alter system kill session '403,34455' IMMEDIATE;
alter system kill session '604,37015' IMMEDIATE;

[oracle@nominabdf ~]$ more /tmp/killSession${esquema}.sql

alter system kill session '598,60705' IMMEDIATE;



alter system kill session '13,6279' IMMEDIATE;



alter system kill session '595,49129' IMMEDIATE;



alter system kill session '591,46591' IMMEDIATE;



alter system kill session '16,47283' IMMEDIATE;



alter system kill session '403,34455' IMMEDIATE;



alter system kill session '604,37015' IMMEDIATE;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接