2012-07-23 41 views
0

我正在使用oracle sql開發人員將一些數據後臺打印到csv文件。到目前爲止,我有這樣的一個文件:刪除空白行之間選擇查詢當後臺處理爲CSV文件

SET head OFF; 
SET echo OFF; 
SET termout OFF; 
SET verify OFF; 
set colsep , 
set pagesize 0 
set feedback off 
@sandbox.sql 

Sandbox.sql包含此:

spool "C:\TEMP\test.csv" 
select 'Date,Average' from dual; 
select to_char(rollup_time, 'mm/dd/yyyy'), average from sample_table 
order by 1; 
spool off; 

這會產生一些CSV文件看起來像這樣:

日期平均

1/1/2012 900
1/2/2012 910

我想擺脫列標題後面的空行,但我不能設置trimspool on(選項不存在),union all無法工作,因爲數據類型不一樣。有誰知道如何刪除oracle的SQL開發環境中的空行?

+0

http://pregen.wordpress.com/2010/06/17/output-sql-queries-to-csv/ ?? ?? 他們講的是類似 SELECT * FROM CONTACTS WHERE email = NULL INTO OUTFILE'missingemails.csv'FIELDS TERMINATED BY','LINES TERMINATED BY'n'; 但我沒有嘗試,讓我們知道結果... – 2012-07-23 17:17:32

+0

我不認爲這是我正在尋找,因爲這只是從表中的基本選擇,並將其導出到CSV文件。它不允許我創建列標題< - 我可以在沒有標題的情況下輸出文件(沒有空行),但是標題會將空格分隔爲標題和數據。 – roostersign 2012-07-23 17:34:58

+0

您是否需要在SQL開發人員中進行提取?如果你解壓縮到一個* nix甚至windows命令行,你可以有一個腳本後處理該文件。你在爲什麼建立一個平面文件?加載到另一個系統?報告? – 2012-07-23 17:39:22

回答

0

使用「Set Newpage none」命令。

SET NEWP [AGE] {1 | n | NONE} 將從每頁頂部打印的空白行數設置爲最高標題。值爲零時,會在每個頁面的開頭(包括第一頁)放置換頁符,並在大多數終端上清除屏幕。如果將NEWPAGE設置爲NONE,則SQL * Plus不會在報告頁面之間打印空白行或換頁。

+0

這是對OP的準確迴應。 Oracle會在輸出的頂部添加一行。 OP的例子顯示了兩條空行。一個在標題列之前,另一個在查詢之間。使用set newpage無法解決這兩個問題。 – 2017-10-06 16:19:19

+1

我使用sql developer 3.2.20甚至添加SET NEWPAGE NONE,然後在sql文件中寫入兩個sql語句,兩個sql查詢結果之間有一個空行。 – user1169587 2017-12-05 10:00:43

0

我剛剛發現自己在同樣的情況roostersign和我已成功地避免在SQL我的兩個查詢之間的空行* Plus中有:

set space 0 

我被這裏測試的建議,到了那裏: SQL*Plus: Formatting query results

+0

這設置了列之間的空間(並且已被set colsep取代)列間距對CSV文件進行後臺處理時非常重要,但不是OP所要求的。 – 2017-10-06 16:17:28