从oracle线程到csv时,避免使用双列引号

kte*_*ten 2 csv oracle 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;
Run Code Online (Sandbox Code Playgroud)

产量

"PCG"
"76259737020150320000504281565213310052440093515652109.2909.290101"
"19519905620160502000504283153419040044861008644759203.3903.390101"
"49424051620160220000504284594314590009220713032964404.3804.380202"
"88761197020151025000504284594315180036700812132964401.9901.990101"
Run Code Online (Sandbox Code Playgroud)

Ale*_*ole 6

你无法摆脱/*csv*/指令的双引号.现在执行此操作的稍微方便的方法是使用sqlformat命令,但即使sqlformat delimited 您必须将字符串括起来.

尽管如此,对单个列使用CSV格式似乎毫无意义,除非你想要逃脱字符串中的分隔符.如果你真的是导出那一列而没有分隔符,那么就省略/*csv*/指令.如果您有多个列或字符串可能包含分隔符,那么在Excel或其他外部工具中打开时,这些外壳可用于阻止这些分隔符被误解释.

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

select pcg ||','|| some_other_col ||','|| etc from ...
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

你不能用/*csv*/指令或sqlformat csv尽管这样做.