[SQL][Excel]怎麼匯出 SQL Server 資料到 Excel 上 ?

當無法透過 SSMS 匯出資料到 Excel 的時候,我們還可以怎麼去做呢 ?

幾乎每隔一陣子,都會遇到一些朋友來詢問 SSMS 匯出資料到 Excel 的問題,每次看到這樣的圖片,就會想說怎麼又來這樣的問題,因此想說就順手整理一下吧。

基本上如果透過 Google 去找上面訊息的相關關鍵字,會找到一些在舊版本 Office 的時候,先透過安裝 32 位元版本的ACE Driver,就可以使用了( 雖然我也已經困惑好久,為什麼微軟不允許同時安裝 32 位元和 64 位元的驅動程式 )。但是要是您安裝新版本的 64 位元的 Office 2016 or Office 365,那可能就要先把 Office 移除,才能安裝上那個驅動程式,然後再把 64 位元的 Office 給安裝回來,這樣雖然可以完成,但總覺得為了匯出資料,而就要那麼麻煩,難道沒有比較簡單的方式嗎 ?

基本上直接匯出可能有問題,那我們或許可以轉個彎, 一樣可以達到同樣的效果。

方法一:匯出 CSV 檔案

當使用 SSMS 匯出資料的時候,您可以將目的地選擇「Flat File Desination」,這個算是蠻簡單又容易的方式,如果您的欄位沒有一些 Binary 之類的特殊資料,那基本上使用這個方式先匯出之後,接著再用 Excel 載入資料就可以了。

方法二:利用查詢結果複製貼上

如果資料量不多的時候,或許直接透過複製貼上,會是最方便的,但這樣的方式遇到像是 NULL 或者是資料有換行之類的符號的時候,就需要再花點功夫去處理了。

方法三:利用 BCP 匯出 CSV 格式

如果需要大量轉出資料,我會透過 BCP 匯出的方式,只是這個方式會有個缺點,就是沒有欄位的名稱,就只有存資料匯出,因此如果您沒有需要欄位的資訊的時候,這個也是一個可以採用的方式。

方法四:利用 Excel 直接讀取資料庫資料

透過 Excel 的 Power Query 去讀取資料,基本上這是我最喜歡的方式,一來是 Excel 現在可以支援非常多種的資料來源,二來資料匯入的時候,還可以透過 Power Query 進行相關資料過濾和篩選處理,在清理資料的時候非常的方便

因為手邊沒有 SQL Server , 就拿 Azure SQL Database 來當範例,像這個部分她可以一次選擇多個資料表

然後針對你所要讀的資料表,在其上面按下滑鼠右鍵,選擇「載入至

選擇產生到表格,並且放到新工作表上,就可以看到所要的資料了

方法五:透過其他的工具,當然這個就有很多種可行的工具了,就看您自己的偏好了。一般來說我都是採用以上幾種方式,就沒有特別去找工具來使用了。