【发布时间】:2022-02-17 20:47:53
【问题描述】:
我有从 SQLPLUS (11.2.0.4) 执行的查询,并且输出被假脱机到文件。我在每行之后得到输出文件空行+查询中最后一列之后的许多空格。我已经在记事本++中打开了文件,我可以看到最后一列附加了大量空格并以 CRLF (windows) 结尾,最后一列是 varchar 4000。
我在互联网上阅读了大量与此相关的文章,但没有一篇对我有帮助。我试图设置 trimspool 开/关,trimout 开/关(顺便说一句 - 两个命令都被跳过),第 0 页,标题关闭,页面大小 0,第 0 页,空格 0,newpage nono
SQL 示例:
set termout off
set pagesize 0
set termout off
set pagesize 0
set heading off
set feedback off
set newpage none
set space 0
set linesize 8000
set longchunksize 200000
/*above was tried step by step - no help*/
spool "G:/gggg/fffff.csv"
PROMT COL1|COL2|COL3
select col1||';'||col2||';'||nvl(col3,'') abc
FROM transactions;
spool off;
output (notepad++):
COL1|COL2|COL3CRLF
col1|col2|col3 CRLF
col1|col2|col3 CRLF
col1|col2|col3 CRLF
output(linux)
COL1|COL2|COL3$
col1|col2|$
COL3 $
col1|col2|$
COL3 $
col1|col2|$
COL3 $
- 我必须使用 SQLPLUS。
- 要求输出文件不带双引号,并以 tilda 作为分隔符 例如
aaaa~bbbb~cccc~eeeeeeeeeeeeeeeeeeeeeeeeee
dddd~rrrr~bggggggg~rrrrrrrrrrrrrrrrrrrrrrrrrr
eeee~rrrrrrr~ttttttt~yyyyyyyyyyyyyyyyyyyyyyyyyy
列类型:
col1 integer
col2 varchar2(4000 BYTE)
col3 varchar2(4000 BYTE)
当前输出的样子
COL1NAME~COL2NAME~COL3NAME
aaaa~bbbb~cccc~eeeeeeeeeeeeeeeeeeeeeeeeee
dddd~rrrr~bggggggg~rrrrrrrrrrrrrrrrrrrrrrrrrr
eeee~rrrrrrr~ttttttt~yyyyyyyyyyyyyyyyyyyyyyyyyy
我想删除空行而不删减行中的字符。
我可以在记事本++中看到:
COL1NAME~COL2NAME~COL3NAMECRLF
aaaa~bbbb~cccc~eeeeeeeeeeeeeeeeeeeeeeeeee..................................CRLF
dddd~rrrr~bggggggg~rrrrrrrrrrrrrrrrrrrrrrrrrr..............................CRLF
eeee~rrrrrrr~ttttttt~yyyyyyyyyyyyyyyyyyyyyyyyyy............................CRLF
我可以在 linux 中看到(less 之后):
COL1NAME~COL2NAME~COL3NAME$
aaaa~bbbb~cccc~eeeeeeeeeeeeeeeeeeee$
eeeeee $
$
dddd~rrrr~bggggggg~rrrrrrrrrrrrrrrr$
rrrrrrrrrr $
$
eeee~rrrrrrr~ttttttt~yyyyyyyyyyyyyy$
yyyyyyyyyyyy $
$
【问题讨论】:
-
嗨,我找到了适合我的解决方案:``` SET HEADING OFF SET FEEDBACK OFF SET NEWPAGE NONE SET SPACE 0 SET TRIMSPOOL ON SET LINESIZE 32000 ``` 注意1:SQLPLUS 可以识别 trimspool ,SQL开发商没有。注意 2:coalesce(col2,'') 不起作用,如果 col2 为空,它总是返回空值,我希望空字符串。为了得到正确的结果,我使用了:``` CASE WHEN col2 is null or col2 = '' THEN '' ELSE col2 END ```
-
不幸的是,我想将其作为答案,但我的帐户无法提供答案