【问题标题】:SqlDeveloper SPOOL: Blank first lineSqlDeveloper SPOOL:第一行空白
【发布时间】:2017-03-02 13:16:41
【问题描述】:

我想使用 SqlDeveloper(版本为 4.1.5.21)将多个表导出到一个分号分隔的文件中。

目前我使用

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

对于脚本中的每个表,这很好。

问题是生成的文件有一个空白的第一行。是否有可能删除它?我做了一些研究,看起来在 SqlPlus 中处理该问题的函数在 SqlDeveloper 中没有实现。

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

如果无法使用 spool 删除该空白行,是否有任何 sql 内置函数可以用来操作生成的标志,这样我就不必运行 SqlDeveloper 和 bash 脚本来获取正确的文件?

【问题讨论】:

  • 您要寻找的结果(输出)是什么?
  • 我在 4.2.0.16.356 中没有看到一个空行(好吧,不是在顶部;我确实在文件底部看到了一个)。不确定这是否是特定于版本的行为——在你展示之前你是否在他的脚本(或会话)中做任何其他事情;还有其他set 命令吗?
  • 好的,我确实可以在 4.1.15 中复制,所以行为在 4.2.0 中发生了变化(已修复?)(仍然是早期采用者)。我还没有找到使 4.1.15 行为相同的方法。您过去可以使用 set pagesize 0 解决此问题,但该版本不接受零。 (顺便说一句,4.2.0 似乎也改变了 spool 的工作方式 - 直接运行您的代码(而不是通过单独的 @)不再是 echos the SQL statements,这很好)。

标签: oracle oracle-sqldeveloper spool


【解决方案1】:

如果有人偶然发现这个问题:

正如 Alex 在 cmets 中指出的,这是 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 2015-12-21
    • 2022-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多