如何在Oracle SQL开发者中导出查询结果到csv ?

我使用的是Oracle SQL Developer 3.0。试图弄清楚如何将查询结果导出到文本文件(最好是CSV)。右键单击查询结果窗口没有提供任何导出选项。

653892 次浏览

我正在使用的版本

Oracle SQL Developer Version 3.0.02;Build MAIN-02.37

2012年5月5日更新

杰夫史密斯博客显示,我认为这是从SQL Developer获取CSV输出的高级方法。Jeff的方法如下method 1所示:

方法1

将注释/*csv*/添加到SQL查询中,并将查询作为脚本运行(使用F5或工作表工具栏上的第二个执行按钮)

select /*csv*/ *
from emp;

 SQL开发人员执行上面的SQL语句作为脚本的屏幕截图,显示输出自动格式化为有效的CSV。

就是这样。

你也可以使用spool自动将其保存为CSV文件:

spool "/path/to/file.csv";
select /*csv*/ *
from emp;
spool off;

只要确保“按脚本运行”;或按F5

方法2

运行查询

alt text

右键单击并选择卸载。

< >强更新。在Sql Developer Version 3.0.04中,unload已更改为export 感谢Janis Peisenieks指出这一点

alt text

修改了SQL Developer Version 3.0.04的屏幕截图

enter image description here

从格式下拉菜单中选择CSV

alt text

然后按照屏幕上的其他说明操作。

不完全是“导出”,但你可以在你想导出的网格中选择行(或Ctrl-一个选择所有行),然后用Ctrl-C进行复制。

默认值是由制表符分隔的。您可以将其粘贴到Excel或其他编辑器中,并随心所欲地操作分隔符。

同样,如果你使用Ctrl-转变-C而不是Ctrl-C,你也会复制列标题。

供任何遇到问题的人参考,在CSV时间戳导出中有一个bug,我只是花了几个小时来解决这个问题。我需要导出的一些字段是时间戳类型的。即使在当前版本(截至本文发布时为3.0.04)中,CSV导出选项也未能在时间戳周围放置分组符号。非常令人沮丧,因为时间戳中的空格打破了我的导入。我发现的最好的解决方法是在所有时间戳上使用TO_CHAR()来编写查询,这会产生正确的输出,尽管要多做一些工作。我希望这可以节省一些时间,或者让甲骨文在他们的下一个版本上有所作为。

供参考,你可以替换/*csv*/ 也适用于其他格式,包括/*xml*//*html*/。 例如,select /*xml*/ * from emp将返回一个包含查询结果的xml文档。 在寻找从查询返回xml的简单方法时,我偶然发现了这篇文章

CSV导出不会转义您的数据。注意以\结尾的字符串,因为生成的\"看起来像转义的",而不是\。然后你有错误的"的数字,你的整个行被打破。

从sql developer导出到本地系统。

Path : C:\Source_Table_Extract\des_loan_due_dtls_src_boaf.csv


SPOOL "Path where you want to save the file"
SELECT /*csv*/ * FROM TABLE_NAME;