首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 使用 BCP 工具將資料匯出至文字檔完整教學

     編輯:關於SqlServer

在 SQL Server 環境中,將資料庫查詢結果匯出為文字檔(如 CSV、TXT)是常見的資料交換需求。其中最經典且效能優異的方式,莫過於搭配 xp_cmdshell 執行 bcp (Bulk Copy Program) 指令。本文將詳細說明從啟用權限、指令語法解析,到實際匯出範例的完整流程。

一、 前置準備:啟用 xp_cmdshell

xp_cmdshell 為擴展預存程序,允許在 T-SQL 中執行作業系統命令。預設關閉,需透過以下兩種方式啟用:

方法 1:使用 sp_configure (腳本方式)

EXEC master.dbo.sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC master.dbo.sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

方法 2:使用「表面積設定」工具 (GUI 方式)

開啟 SQL Server 組態管理工具,選擇「功能的表面積設定」,勾選 Enable xp_cmdshell 核取方塊即可。

表面積設定啟用 xp_cmdshell

圖一:表面積設定介面

二、 BCP 匯出指令實戰

啟用完成後,即可在查詢視窗執行 BCP 指令。以下範例將系統資料表 sysfiles 的內容,以逗號分隔 (CSV) 格式匯出至 C:\bcptest.txt:

EXEC xp_cmdshell 'bcp "SELECT * FROM sysfiles" queryout "C:\bcptest.txt" -T -c -t,';

注意: BCP 為命令列工具,xp_cmdshell 僅能在單一 SQL 批次中呼叫。

參數詳細說明

參數用途
queryout指定輸出來源為查詢語句,支援任意複雜度的 SELECT,亦可搭配 View 使用。
檔案路徑緊接在 queryout 之後,定義輸出檔案完整路徑。
-T使用信任連線 (Windows 整合驗證) 連接 SQL Server。若需 SQL 驗證,改用 -U (帳號) 與 -P (密碼)。
-c以字元資料類型處理每個欄位 (預設為原生格式),適合文字檔匯出。
-t,指定欄位分隔符號,此處為逗號 ,。若省略,預設為 Tab (\t)。

執行結果範例

在 master 資料庫執行上述指令,訊息頁籤將顯示匯出進度與筆數:

BCP 匯出執行結果

圖二:匯出成功訊息

三、 進階應用:指定伺服器與執行個體

若目標非本機預設執行個體,需加入 -S 參數指定伺服器名稱\執行個體名稱:

EXEC xp_cmdshell 'bcp "select name, type_desc, create_date from sys.objects" queryout "C:\bcptest2.txt" -T -S DEVELOP\DEV1 -c -t,';

關鍵提醒: -t (分隔符) 與 -T (信任連線) 大小寫意義截然不同,請務必確認大小寫正確,避免連線失敗或格式錯誤。

四、 小結

透過 xp_cmdshell + bcp 組合,可高效完成大量資料的文字檔匯出,且支援彈性的查詢來源、分隔符號與驗證模式。實務上建議搭配預存程序或 SQL Agent Job 自動化排程,滿足定期匯出需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved