2011-09-12 74 views
20

我有一個查詢返回一個非常大的數據集。我無法將其複製並粘貼到我通常使用的Excel中。我一直在研究如何直接導出到Excel工作表。我在運行Microsoft Server 2003的服務器上運行SQL SERVER 2008.我嘗試使用Microsoft.Jet.OLEDB.4.0數據提供程序和Excel 2007.我將一小段代碼拼湊在一起在例子中見過。將SQL查詢數據導出到Excel

INSERT INTO OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 
'Data Source=C:\Working\Book1.xlsx;Extended Properties=EXCEL 12.0;HDR=YES') 
SELECT productid, price FROM dbo.product 

但是這不工作,我得到一個錯誤信息說

「關鍵字‘SELECT’附近有語法錯誤」。

有沒有人有任何想法如何做到這一點或可能更好的方法?

+0

您可能還需要用'[Sheet1]指定一個表格'我認爲 – JNK

+1

您可以用[Sheet1]指定? Ohhhh [狗屎] !!! – JBone

回答

40

我不知道如果這是你在找什麼,但你可以將結果導出到Excel這樣的:

在結果窗格中,單擊左上角單元格以突出顯示所有記錄,然後右鍵單擊左上角的單元格並單擊「將結果另存爲」。其中一個導出選項是CSV。

你也許該給一個鏡頭太:

INSERT INTO OPENROWSET 
    ('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=c:\Test.xls;','SELECT productid, price FROM dbo.product') 

最後,您可以考慮使用SSIS(取代DTS)進行數據導出。這裏是一個鏈接到一個教程:

http://www.accelebrate.com/sql_training/ssis_2008_tutorial.htm

+4

請注意,右鍵單擊/另存爲... CSV不會引用包含逗號或換行符的文本字段。因此,如果您的任何數據包含逗號,則最終會生成格式錯誤的CSV。 – aucuparia

+0

保存結果不輸出列標題。 – YDS

11

如果您只需要導出到excel,則可以使用導出數據嚮導。 右鍵單擊數據庫,任務 - >導出數據。

+1

將它放入存儲過程並且必須作爲頁面上的事件運行 – JBone

1

我也有類似的問題,但與一捻 - 當結果集是從一個查詢,但在我的處境上面列出的解決方案的工作,我有多個獨立的SELECT查詢爲此我需要將結果導出到Excel。以下僅僅是爲了說明,雖然我可以做一個name in子句的例子...

select a,b from Table_A where name = 'x' 
select a,b from Table_A where name = 'y' 
select a,b from Table_A where name = 'z' 

嚮導已讓我從一個查詢導出結果到Excel但不能從在這種情況下不同的查詢所有結果。

當我研究,我發現我們可以禁用結果到網格並啓用結果到文本。因此,請按Ctrl + T,然後執行所有語句。這應該將結果顯示爲輸出窗口中的文本文件。您可以將文本操作爲製表符分隔的格式,以便導入到Excel中。

您也可以按Ctrl + Shift + F將結果導出到文件 - 導出爲.rpt文件,可以使用文本編輯器打開該文件並對excel導入進行操作。

希望這可以幫助任何其他人有類似的問題。