spool命令不保存sql plus中的所有行

时间:2017-11-16 11:51:43

标签: oracle sqlplus

我在sqlplus中使用spool命令生成一个带有一些查询行的文件。

首先我分配输出格式,然后我做假脱机生成输出文件,但它不保存所有行。

set lines 100
set pages 1500
set colsep ';'
spool /home/bsoinst/users/example.txt

select name,salary from employees(查询示例)

原始查询生成1433行,但在文件中仅显示1414

由于

1 个答案:

答案 0 :(得分:0)

假脱机写入文件,但输出被缓冲。如果您从已经显示的交互式会话中进行假脱机,则直到您退出会话或通过缓冲区以spool off(或启动另一个假脱机)结束任何您执行is still being written to the file的操作。

  

SQL * Plus继续将信息假脱机到文件,直到您关闭假脱机...

在缓冲区已满之前,它不会被刷新到文件系统。因此,如果您查看该文件,它将是不完整的。

如果你这样做:

spool off

然后将刷新剩余的部分缓冲区并关闭文件,然后在文件系统上完成。 (当然,您现在也可以看到在运行查询和发出该命令之间所做的任何事情。)

我认为缓冲区大小取决于操作系统/文件系统,而不是SQL * Plus中可以控制的。