2014-09-24 123 views
5

我有一系列想要输出到.csv文件的查询。我必须查询数据库的唯一工具是SQL Developer。当试图从SQL Developer中导出时,SPOOL返回空文件

我可以运行每个查询,然后使用SQL Developer中的Export对话框将它们写入文件,但这很麻烦,特别是当这需要每天为多个文件完成时。

这适用于某些人 Directly export a query to CSV using SQL Developer

但它不为我工作。

例如,如果我尝试

spool "C:\Users\james.foreman\Downloads\Temp\myfile.csv" 

select distinct placement_type 
FROM jf_placements; 

spool off; 

然后在SQL Developer的脚本输出窗口,我看到

无法创建假脱机文件C:\ Users \用户james.foreman \下载\ TEMP \ myfile.csv

虽然myfile.csv已创建,但没有结果。 (查询返回了两行)

我的第一个想法是写入C:\ Users \ james.foreman \ Downloads \ Temp的权限问题 但似乎并非如此,因为如果我删除myfile.csv并运行SQL,则会重新创建myfile.csv文件,但它从来没有任何内容。

所以我认为这是一个配置问题,无论是在我正在运行SQL Developer的Windows机器上,还是与我的SQL Developer设置。我应该在哪里寻求进一步调查?

@Devolus对Procedure to export table to multiple csv files的回答包括“在SQL窗口中右键单击 - >将窗口更改为 - >命令窗口”的指令,但是如果我右键单击SQL窗口,我看不到更改窗口选项。

(运行Windows 7,SQL Developer版本4.0.2.15,构建15.21,数据库是Oracle 11.2)

+0

你可以从'SQL * Plus'尝试相同的方法,看看这次文件是否有内容。 – 2014-09-24 05:46:16

+0

嗨,我不能;我在这台机器上只有SQL Developer,而不是SQL * Plus。 – JamesF 2014-09-24 07:57:35

+0

看到我的答案。关于'SQL * Plus',我只是想让你验证一下。没有问题,只需按照答案。 – 2014-09-24 08:27:37

回答

5

该文件被创建的事实,但没有数据,也许是最后陈述,SPOOL OFF不尚未执行。在脚本中添加一行,然后重试。

例如,你的脚本看起来像:

spool "C:\Users\james.foreman\Downloads\Temp\myfile.csv" 

    select distinct placement_type 
    FROM jf_placements 
    /

    spool off 
    /

-- need a new line to make sure spool off executes 
+0

谢谢 - 现在在结果文件中有SQL查询。尽管我从其他问题看到,从脚本转向运行应该解决这个问题。 – JamesF 2014-09-24 10:06:45

+0

感谢您的反馈。是的,您可以将内容放入'.sql'脚本并执行脚本。 – 2014-09-24 10:17:11

+0

在'Oracle SQL Developer'中将语句作为脚本运行,即按“运行脚本”而不是“运行状态”,或者可以按F5键。 – 2018-02-16 07:48:04

2

当你运行你的脚本,按“运行脚本”,而不是“运行Statment” 或者你可以按F5。

它固定我的问题,希望能够解决你的那

1

在我的情况下,花了两件事情来解决这个问题:

  • 从脚本运行(使用@C:\文件。 SQL符号)
  • 升级到SQL Developer的

我正在运行SQL开发人员3.2.20.09(不工作)的最新版本,而现在使用4.0.2.51(完全相同的脚本工作)。

另外,

相关问题