Oracle SQLPlus:如何在不首先发出spool off命令的情况下显示sqlplus命令的输出?

4
有没有一种方法可以在不先发出spool off命令的情况下显示sqlplus命令的输出?我正在将sqlplus会话的结果转储到文件中,同时尾随该文件。这样做的原因是对于具有非常长行的表格,从文件中查看格式更容易。问题是要查看输出,我必须每次运行sqlplus命令时都发出spool off命令。我能否配置sqlplus,以便在发出spool命令后,所有输出都可以立即在文件上查看。(不是屏幕上显示行的格式化选项。)谢谢
5个回答

2
SPOOL实际上是用于创建SQL*Plus输出文件的工具,无论是用于记录日志、输入到另一个进程等任何目的。它没有提供实时查看输出内容的功能。
解决这个问题的方法有很多种,但最简单的方法当然是使用包含数据浏览器的IDE,从而避免需要跟踪文件。市场上有许多这样的工具,包括Quest's TOADAllround Automation's PL/SQL Developer,但如果您不想支付许可费用,那么可以考虑使用Oracle自己提供的(免费)SQL Developer

1
如果您的问题是无法打开输出文件(因为spool进程已经锁定了它),那么请尝试将输出文件复制到另一个文件中,然后打开该文件。

1

由于您的实际问题似乎是SQLPlus输出格式的问题 - 您可以将SQLPlus窗口扩展并设置LINESIZE,以便从一开始就在SQLPlus中获得更好的输出效果吗?然后您可能根本不需要使用spool。


我尝试过,但输出的大小超过了sqlplus允许的最大值。 - ziggy

1

如果您正在缓冲多个语句的结果,则可以在每个语句之间关闭缓冲,然后再打开。当您重新打开缓冲时,请添加append关键字,以便它将继续在同一文件中而不是覆盖它。

如果您想在您的缓冲文件中查看一个查询的结果,则可以将查询分解为返回数据特定范围的多个查询。这会更慢,但您可以循环缓冲以获得更快的反馈。


0

我试图添加评论,但由于某种原因它无法保存,所以我会尝试“回答您的问题”选项:)

我确实使用SQLDeveloper,但有些情况下我必须使用sqlplus,而SQLDeveloper不可用,那么我就只能使用普通的sqlplus。

还有其他情况,我会纯粹使用sqlplus而不是sqldeveloper,因为在sqlplus中查找我要查找的内容只需要1/2分钟,而在SQLDeveloper中需要几分钟,因为它需要很长时间才能加载。

我已经检查了输出被刷新之前需要的时间,看起来它会在一定数量的行后将其刷新出来。难道没有办法减少缓冲区大小,以便更快地刷新它们吗?

打开文件没有问题,即使文件已打开,除非我发出“spool off”命令或输出有几百行,否则我也看不到输出。我正在使用一个名为baretail(http://www.baretail.com)的免费程序在Windows上跟踪spool文件。

谢谢


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