Sql-Server-2008

將選擇結果寫入 csv 文件

  • September 28, 2019

我們需要將 SELECT 查詢結果寫入 csv 文件。如何在 SQL Server 2008 r2 中使用 T-SQL 來完成?我知道它可以在 SSIS 中完成,但由於某些原因,我們沒有這個選項。

我嘗試使用下面文章中建議的 proc,但是當我執行 proc 時,SQL 抱怨無法執行在此 proc 中呼叫的 sys.sp_OACreate 和 sys.sp_OADestroy。

您知道我們如何打開這些組件或知道使用 T-SQL 寫入文件的更好方法嗎?

提前致謝。

使用BCP 實用程序

bcp "SELECT Col1,Col2,Col3 FROM MyDatabase.dbo.MyTable" queryout "D:\MyTable.csv" -c -t , -S SERVERNAME -T

-c參數指定c字元輸出,而不是 SQL 的本機二進制格式;這預設為製表符分隔值,但-t ,將欄位t終止符更改為逗號。 -T指定 Windows 身份驗證(“可信連接”),否則使用-U MyUserName -P MyPassword.

預設情況下,這不會導出列標題。您需要對標題使用 UNION ALL

要麼

使用 SQLCMD

SQLCMD -S SERVERNAME -E -Q "SELECT Col1,Col2,Col3 FROM MyDatabase.dbo.MyTable"
-s "," -o "D:\MyData.csv" 

要麼

使用 Powershell

這是一篇文章的連結。如果您最終使用它,您可能需要附加-notypeafterExport-Csv $extractFile以刪除輸出文件中不必要的列。

引用自:https://dba.stackexchange.com/questions/23566