Oracle sqlplus spool查询结果如何制作成文件?

How to make Oracle sqlplus spool query results to a file?

使用 SQL 另外,我 运行 这个脚本

set colsep ,
set headsep off
set pagesize 0
set trimspool on
set linesize 67
set numwidth 20

spool C:\Users\xxxxx\AppData\Local\Temp\bncm.txt

SELECT
UNIQ_ID AS UNIQUEID
,REC_ID AS REC_ID
,ACC_NUM AS ACCOUNT
,NOTE_NUM AS NOTENMB
... more columns here
from visn_exp.V_IHCVSN_COMML_LN
WHERE as_of_dt = '30-oct-2020';

spool off

像这样:

但是当我这样做时,行显示在控制台上,而不是写入文件。我错过了什么?

更新:简单测试

> sqlplus svc_visn_rrdw@usrrprd

SQL*Plus: Release 12.2.0.1.0 Production on Wed Jan 27 13:51:47 2021

Copyright (c) 1982, 2017, Oracle.  All rights reserved.

Enter password:
Last Successful login time: Wed Jan 27 2021 13:26:03 -05:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options

SQL> spool c:\temp\dual.txt
SQL> select * from dual;

D
-
X

SQL> spool off
SQL>

PS P:\
> cat c:\temp\dual.txt
SQL> select * from dual;

D
-
X

SQL> spool off

PS P:\
>

当从 cmd 而不是 Posh 运行ning 时,结果与上面相同。查询结果出现在控制台(和目标文件中)。我想停止在控制台中显示结果。

使用 SQL*Plus 命令 set termout off 禁用控制台输出。但是,该命令仅适用于脚本 - 您必须将命令放在脚本中,而不是简单地输入所有命令。

例如,使用以下内容创建文件“C:\temp\test.sql”:

set termout off
spool c:\temp\dual.txt
select * from dual;
spool off

当您 运行 该文件时,输出不会显示在控制台上,但会被假脱机到文件中。

JHELLER@orclpdb> @C:\temp\test.sql
JHELLER@orclpdb> quit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
PS C:\> cat C:\temp\dual.txt

D
-
X

PS C:\>