2017-03-02 431 views
1

我想将多个表导出为每个使用SqlDeveloper(版本为4.1.5.21)的以分号分隔的文件。SqlDeveloper SPOOL:第一行空白

目前我在脚本中,这是很好的使用

SET SQLFORMAT delimited 
spool ..\dir\table1.csv 
select * from table1; 
spool off; 

为每个表。

问题是生成的文件有第一行空白。是否有可能删除它?我已经做了一些研究,它看起来像SqlPlus中的那个功能,并没有在SqlDeveloper中实现。

我也尝试在SqlPlus中完成相同的操作,但我甚至没有接近由SqlDeveloper生成的结果。

如果不可能使用spool来摆脱空白行,是否有任何sql内置函数可用于操作结果标志,所以我不必运行SqlDeveloper然后运行bash脚本以获取适当的文件?

+0

什么是你正在寻找的结果(输出)? – BobC

+0

我在4.2.0.16.356中看不到空行(当然,不在顶部;我在文件的底部找到一行)。不知道这是否是特定于版本的行为 - 你在做什么之前做了其他事情吗?任何其他'set'命令? –

+1

好的,我确实可以在4.1.15中复制,所以在4.2.0(仍然是早期采用者)中行为已经改变(已被修复?)。我还没有找到让4.1.15表现相同的方法。您曾经可以通过“设置页面大小0”来解决这个问题,但在该版本中不接受零。 (顺便说一句,4.2.0似乎也改变了spool的工作方式 - 直接运行代码(不是通过单独的@)不再[回声SQL语句](http://stackoverflow.com/q/19033943/266304),这很好)。 –

回答

0

如果有人绊倒在这个问题:

亚历克斯在评论中指出,这是的SQLDeveloper的4.1.15版本(也许更早版本)中的错误。要摆脱它,请升级到4.2.0。

如果您和我一样,由于某种原因被早期版本困住,您可以使用与SqlDeveloper一起运行的sqlcl来执行脚本,而不会出现所描述的问题。

我的.sql脚本是这样的:

SET ECHO OFF 
SET FEEDBACK OFF 
SET sqlformat delimited ; " " 

spool ..\relative\path.csv 
select * from table1; 

SPOOL OFF; 
QUIT; 
相关问题