从oracle

时间:2016-08-16 07:11:29

标签: oracle csv oracle-sqldeveloper

我需要使用spool将选择查询输出导出到文本文件。默认情况下,输出会在列周围添加双引号。如何预防? 查询只返回一列。

理想情况下,我需要删除标题以及输出中的双引号。下面是我在oracle Developer中使用的脚本文件。但标题也没有删除。

set echo off
SET HEADING OFF
SET PAGESIZE 0
SET COLSEP ''
spool 'D:\public\cvs_txPCG.txt'
select /*csv*/ 
pcg from temptx;
spool off;

输出

"PCG"
"76259737020150320000504281565213310052440093515652109.2909.290101"
"19519905620160502000504283153419040044861008644759203.3903.390101"
"49424051620160220000504284594314590009220713032964404.3804.380202"
"88761197020151025000504284594315180036700812132964401.9901.990101"

2 个答案:

答案 0 :(得分:6)

您无法使用/*csv*/指令删除双引号。现在使用sqlformat命令稍微更方便一些,即使使用sqlformat delimited you have to have the string enclosed

无论如何,对单个列使用CSV格式似乎毫无意义,除非你想要逃脱字符串中的分隔符。如果您实际上是导出了一列并且没有分隔符,那么只需省略/*csv*/指令即可。如果您有多个列或字符串可能包含分隔符,那么在Excel或其他外部工具中打开时,外壳可用于阻止这些分隔符被误解。

如果你真的想要没有附件的CSV格式,你可以通过将列连接到逗号文字来手动建立输出,这仍然允许你假脱机到文件:

select pcg ||','|| some_other_col ||','|| etc from ...

或者您可以使用“运行语句”(Ctrl-Enter)运行查询,然后从右键单击输出时出现的上下文菜单中导出数据网格中的结果。导出并选择CSV或分隔格式时,您可以选择是否包含标题以及要使用的分隔符和附件 - 并且您可以选择“无”#39;。如果您不想在每次导出时设置它,可以将其设置为默认值,从工具 - >首选项:

enter image description here

您无法使用/*csv*/指令或sqlformat csv进行此操作。

答案 1 :(得分:1)

我知道它太旧了但今天我的搜索得到了答案,简单地使用

set markup csv on quote off
select 1 id, 'Venkat' name from dual;

输出

ID,NAME
1,Venkat

甚至没有想到任何其他SET命令