2017-03-02 432 views
1

我想將多個表導出爲每個使用SqlDeveloper(版本爲4.1.5.21)的以分號分隔的文件。SqlDeveloper SPOOL:第一行空白

目前我在腳本中,這是很好的使用

SET SQLFORMAT delimited 
spool ..\dir\table1.csv 
select * from table1; 
spool off; 

爲每個表。

問題是生成的文件有第一行空白。是否有可能刪除它?我已經做了一些研究,它看起來像SqlPlus中的那個功能,並沒有在SqlDeveloper中實現。

我也嘗試在SqlPlus中完成相同的操作,但我甚至沒有接近由SqlDeveloper生成的結果。

如果不可能使用spool來擺脫空白行,是否有任何sql內置函數可用於操作結果標誌,所以我不必運行SqlDeveloper然後運行bash腳本以獲取適當的文件?

+0

什麼是你正在尋找的結果(輸出)? – BobC

+0

我在4.2.0.16.356中看不到空行(當然,不在頂部;我在文件的底部找到一行)。不知道這是否是特定於版本的行爲 - 你在做什麼之前做了其他事情嗎?任何其他'set'命令? –

+1

好的,我確實可以在4.1.15中複製,所以在4.2.0(仍然是早期採用者)中行爲已經改變(已被修復?)。我還沒有找到讓4.1.15表現相同的方法。您曾經可以通過「設置頁面大小0」來解決這個問題,但在該版本中不接受零。 (順便說一句,4.2.0似乎也改變了spool的工作方式 - 直接運行代碼(不是通過單獨的@)不再[回聲SQL語句](http://stackoverflow.com/q/19033943/266304),這很好)。 –

回答

0

如果有人絆倒在這個問題:

亞歷克斯在評論中指出,這是的SQLDeveloper的4.1.15版本(也許更早版本)中的錯誤。要擺脫它,請升級到4.2.0。

如果您和我一樣,由於某種原因被早期版本困住,您可以使用與SqlDeveloper一起運行的sqlcl來執行腳本,而不會出現所描述的問題。

我的.sql腳本是這樣的:

SET ECHO OFF 
SET FEEDBACK OFF 
SET sqlformat delimited ; " " 

spool ..\relative\path.csv 
select * from table1; 

SPOOL OFF; 
QUIT; 
相關問題