oracle spool header seperator

时间:2016-11-02 13:18:25

标签: oracle export-to-csv spool

从sqlplus中假脱机到csv时出现问题...

这是我的剧本:

connect dbread/dbreadonly@p01 ;
set heading on
set pagesize 50000
set underline off
set headsep "|"
set linesize 1000
set echo off
set feedback off
set space 0
set verify off
set trimspool on
set markup html off 

col lifnr for a10 truncated
col bukrs for a4 truncated
col name1 for a35 truncated
col stras for a35 truncated
col ort01 for a30 truncated
col pstlz for a10 truncated
col pfach for a10 truncated
col land1 for a3 truncated
col telf1 for a16 truncated
col telfx for a16 truncated
col stceg for a20 truncated
col bankl for a15 truncated
col bankn for a18 truncated
col smtp_addr for a35 truncated

spool d:\Kofax_Rechnungseingang\Unload\Vendors.csv

select a.lifnr, ';', b.bukrs, ';', a.name1, ';', a.stras, ';', a.ort01, ';', a.pstlz, ';', a.pfach, ';', a.land1, ';', a.telf1, ';', a.telfx, ';', a.stceg, ';', c.bankl, ';', c.bankn, ';', d.smtp_addr
from sapsr3.lfa1 a, sapsr3.lfb1 b, sapsr3.lfbk c, sapsr3.adr6 d
where b.bukrs = '1000'
and a.lifnr = b.lifnr
and c.lifnr = a.lifnr
and d.addrnumber = a.adrnr
and d.persnumber = ' '
and d.home_flag = 'X'
and a.loevm = ' '
and b.loevm = ' '
order by 1
;

spool off

这是输出:

LIFNR';'BUKR';'NAME1 ';'STRAS ';'ORT01 ';'PSTLZ ';'PFACH ';' LAN' ; 'TELF1 ';' TELFX ';'STCEG ';'BANKL ';'BANKN ';'SMTP_ADDR

0000000011;  1000;  xxxxxxxx  ;  xxxxxxxxx  ;  xxxxx ; xxxx ; xxxxxx ; DE ; xxxxxxx ; xxxxxxx ; xxxxxxx ; xxxxxxxxx ; xxxxxxxxx ; xxxxxxx

输出一切正常 - 但是标题分隔符';'应该只是semikolon,就像在数据输出中一样。

错误在哪里?

祝你好运 帕特里克

2 个答案:

答案 0 :(得分:1)

您可以尝试为分号字段指定别名";";例如:

SQL> select 1 as one, ';' as ";", 2 as two, ';' as ";", 3 as three from dual;

       ONE ;        TWO ;      THREE
---------- - ---------- - ----------
         1 ;          2 ;          3

答案 1 :(得分:0)

另一种方法是使用set colsep

SET COLSEP ";"

SELECT 'abcde' col1, 123456 col2, 'abc' col3 FROM dual UNION ALL
SELECT 'efy' col1, 9875 col2, 'howdy' col3 FROM dual;

COL1 ;      COL2;COL3
-----;----------;-----
abcde;    123456;abc
efy  ;      9875;howdy