sqlplus spooling:如何去掉第一行空行?
sqlplus spooling:如何去掉第一行空行?
我正在执行以下的输出语句:
SET VERIFY OFF SET FEEDBACK OFF SET HEADING OFF SET TRIMSPOOL ON SET TERM OFF SPOOL &pathRelations START scripts/relations.sql &parent SPOOL OFF SET TERM ON
scripts/relations.sql
文件中包含一个简单的select
语句。
不幸的是,输出文件的第一行是一个空行。这个空行会在我们的框架中引起问题。
当然,我可以通过sed
去掉这些空行,但是有没有一种方法可以在一开始就阻止它们的生成呢?
问题出现的原因:在使用sqlplus进行spooling操作时,输出的文件的第一行会出现一个空行。用户希望找到一种方法来去除这个空行。
解决方法:可以使用SET NEWPAGE NONE
命令来解决这个问题。这个命令会将分页符设置为无,从而避免产生空行。另外,可以尝试将SET NEWPAGE 0
命令改为SET NEWPAGE NONE
,因为SET NEWPAGE 0
会触发一个分页符,而不是用户想要的结果。
然而,对于某些用户来说,这两种方法都没有起作用。他们表示感谢,但仍然无法解决问题。不过,可以通过将SET HEADING OFF
命令设置为关闭来去除开头的空行,但是这样会导致头部信息也被去除,而有些用户仍然需要头部信息。因此,最好的解决方法是选择自己的标题并进行设置,因为SQLPLUS在格式化标题方面表现不佳。
问题描述:在使用sqlplus进行spool操作时,输出文件的第一行总是为空行,如何解决这个问题?
问题原因:这个问题的原因是sqlplus在执行spool操作时,默认会在输出文件的第一行添加一个空行。
解决方法:可以通过设置sqlplus的NEWPAGE参数来解决这个问题。NEWPAGE参数用于控制在输出文件的每页开头是否添加空行。
具体的解决方法如下:
1. 打开sqlplus命令行工具。
2. 输入以下命令来设置NEWPAGE参数的值为0:
SET NEWPAGE 0;
3. 执行spool操作,将输出结果保存到文件中:
SPOOL output.txt;
4. 执行需要的SQL语句。
5. 结束spool操作:
SPOOL OFF;
通过以上步骤,就可以在输出文件中去掉第一行的空行了。
需要注意的是,NEWPAGE参数的默认值为1,表示在输出文件的每页开头添加一个空行。设置NEWPAGE参数的值为0可以取消这个行为。
通过设置sqlplus的NEWPAGE参数的值为0,可以解决在使用sqlplus进行spool操作时输出文件第一行为空行的问题。
问题出现的原因是在使用sqlplus的spooling功能时,如果使用了"set markup csv on"命令,会在文件开头创建一个回车换行符(LFCR),而Excel会将其识别为一个空行。
解决方法是在执行spooling之前,使用"set newpage none"命令来禁用空行的生成。
下面是解决问题的代码示例:
set newpage none set markup csv on spool output.csv select * from table; spool off
通过在spooling之前使用"set newpage none"命令,可以解决生成的CSV文件开头出现空行的问题。