2011年6月4日

使用 Windows PowerShell 將 SQL Server 資料匯出成 .csv 檔案

先前「使用 Windows PowerShell 將資料匯出成 .html 檔案(含安裝 SQLPSX 模組教學)」一文說明使用 CodePlex 的 SQL Server Powershell Extensions(簡稱 SQLPSX)專案,可以將資料匯出成 HTML 格式。

此次則是要介紹如何在 Windows PowerShell 透過 SQLPSX,並使用 Windows PowerShell 內建的 ConvertTo-CSV 指令(Cmdlet)產生以逗點分隔的內容,再搭配導向功能,將 Microsoft SQL Server 資料輸出成 .csv 檔。

▼ 使用 Microsoft Excel 觀看輸出的 .csv 檔
使用 Microsoft Excel 觀看 SQLPSX 輸出的 .csv 檔

在 Windows PowerSehll 輸入如下的指令:

Get-SqlData ".\SqlExpress" 北風貿易 "SELECT 員工編號, 身份證字號, 姓名 FROM 章立民研究室" | ConvertTo-Csv > d:\章立民研究室.csv

上面的指令會從本機電腦中,名稱為 SqlExpress 的 SQL Server Express 執行個體中的北風貿易資料庫,找出章立民研究室資料表中的所有資料,但只顯示 3 個欄位,接著將查詢結果轉換成 csv 格式,最後再導向輸出到 d:\章立民研究室.csv

當您使用文字編輯器(例如:記事本)開啟該 .csv 檔時,會發現到第 1 列多了 #TYPE System.Data.DataRow 這樣的文字,而第 2 列才是欄位名稱的清單,第 3 列之後才是真正從資料庫匯出的資料。

▼ 匯出的 .csv 檔第 1 列會有型別資訊標頭
匯出的 .csv 檔第 1 列會有型別資訊標頭

如欲避免產生第 1 列的文字(亦即物件型別的資訊標頭),可在 ConvertTo-CSV 指令加上 -NoTypeInformation 參數,這樣才不會產生型別資訊標頭。 所以完整的指令為:

Get-SqlData ".\SqlExpress" 北風貿易 "SELECT 員工編號, 身份證字號, 姓名 FROM 章立民研究室" | ConvertTo-Csv -NoTypeInformation > d:\章立民研究室.csv
關於 SQLPSX 模組詳細的指令說明,可在此處找到。

沒有留言:

張貼留言