如何在oracle中执行db脚本并输出日志文件
Posted
技术标签:
【中文标题】如何在oracle中执行db脚本并输出日志文件【英文标题】:how to execute db script in oracle and output a log file 【发布时间】:2018-03-15 09:11:40 【问题描述】:通常在 DB2 中,如果我想执行一个 db 脚本并将执行结果输出到一个日志文件,我会这样做:
db2 -tvf x.sql > x.log
因此,我可以阅读 x.log 来检查我的脚本是否正确执行。
Oracle 数据库怎么样?
我知道脚本运行如下:
SQL>@x.sql
但是我怎样才能像在 DB2 中那样输出执行结果呢?
请多多指教。
【问题讨论】:
你解决了吗? 嗨@FrancescoB。 ,我尝试了你的方法,但是即使 x.sql 成功运行,filename.txt 中也没有生成任何内容。 但是正在创建 filename.txt,对吗?你可以删除它并让命令重新创建它吗? 我编辑了我的解决方案。基本上我必须添加“SPOOL OFF”,这应该强制写入文件。 嗨@FrancescoB。 ,一旦我试穿会回复你。目前在做其他项目,明天可能会做。 【参考方案1】:使用SPOOL
SPOOL filename.txt
@x.sql
SPOOL OFF
将查询结果存储在文件中,或可选择将文件发送到打印机
您可以使用的其他选项:
创建[ATE]
使用指定的名称创建一个新文件。
REP[花边]
替换现有文件的内容。如果文件不存在, REPLACE 创建文件。这是默认行为。
APP[结束]
将缓冲区的内容添加到您指定的文件的末尾。
关闭
停止假脱机。
输出
停止假脱机并将文件发送到您计算机的标准 (默认)打印机。此选项在某些操作上不可用 系统。
【讨论】:
【参考方案2】:似乎是一个常见问题解答,尝试使用带有 sqlplus 的 shell 重定向:
sqlplus your_connect_string_here @x.sql 1>x.out 2>&1
考虑在脚本内部使用:set termout on
和spool
命令来进一步调整行为。有关所有详细信息,请参阅 Oracle sqlplus 文档。
【讨论】:
以上是关于如何在oracle中执行db脚本并输出日志文件的主要内容,如果未能解决你的问题,请参考以下文章
如何将一shell脚本中的每一步命令执行结果输出到指定日志文件中