Oracle / SQL PLUS:如何假脱机日志并在整个脚本中间歇性地写入

时间:2015-12-21 16:33:05

标签: oracle sqlplus

弄清楚如何将文件换到文件已经很容易了。我希望在写入每个命令后有一个写入文本文件的选项。我不知道如何将长脚本的状态传达给我团队中的其他人。我们要做的解决方案是将一个日志文件写入网络驱动器,因为脚本执行它们可以跟随它。

然而,这似乎只是在假脱机后将输出写入文件;命令在文件的末尾。

有没有办法实现我们尝试做的事情,无论是使用假脱机文件还是其他方法?

这是我到目前为止的代码。

set timing on;
set echo on;

column date_column new_value today_var
select to_char(current_timestamp, 'yyyymmdd_HH24_MI') as date_column
  from dual
/
select current_timestamp from dual;

SPOOL 'Z:\log\KPI\secondary_reporting_&today_var..log'

... lots of stuff...
spool off;

2 个答案:

答案 0 :(得分:2)

根据你的“东西”是什么,我会想到两种方法。

1)如果你的代码有很多SQL语句和PL / SQL块,那么你可以重复使用一段时间。请使用spool <filename> append语句。

SQL> help spool

 SPOOL
 -----

 Stores query results in a file, or optionally sends the file to a printer.
 In iSQL*Plus, use the Preferences screen to direct output to a file.

 SPO[OL] [file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]] | OFF | OUT]

 Not available in iSQL*Plus

2)如果您有长时间运行的PL / SQL过程,请使用UTL_FILE包。有关详细信息,请参阅https://docs.oracle.com/html/B14258_02/u_file.htm。这确实需要数据库中的一些设置和管理权限来设置允许写入的目录。

答案 1 :(得分:1)

据我所知,当假脱机输出写入文件时无法控制。但是,解决这个问题的一种方法可能是完全放弃假脱机并重新定向输出:

$ sqlplus @/path/to/script.sql >& /path/to/script.log