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

SQL Server 匯出資料至文字檔:啟用 xp_cmdshell 與 BCP 實戰

     編輯:關於SqlServer

需求:將查詢結果匯出為 CSV/文字檔。工具:xp_cmdshell 呼叫 BCP (大量複製程式)。

步驟 1:啟用 xp_cmdshell

方法 A:T-SQL

EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;

方法 B:SSMS 圖形介面

右鍵伺服器 → 屬性 → 進階 → 啟用 xp_cmdshell 勾選。

步驟 2:執行 BCP 匯出

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

參數解析:

  • queryout:指定查詢輸出模式。
  • "C:\bcptest.txt":輸出檔案路徑。
  • -T:信任連線 (Windows 驗證);或 -U user -P pwd。
  • -c:字元資料類型 (預設 tab 分隔)。
  • -t,:欄位分隔符號設為逗號 (CSV)。

指定伺服器與實例

EXEC xp_cmdshell 'bcp "SELECT name, type_desc, create_date FROM sys.objects" 
    queryout "C:\bcptest2.txt" -T -S SERVERNAME\INSTANCE -c -t,';

進階應用

  • 匯出檢視表:建立 View 封裝複雜查詢,BCP 直接 SELECT * FROM vw_ExportData。
  • 排程自動化:SQL Agent 作業步驟型別 CmdExec 直接呼叫 bcp.exe,避免 xp_cmdshell 安全風險。
  • 大量資料分批:搭配 OFFSET/FETCH 分頁查詢,多次 BCP 追加 (>>) 至同一檔案。

安全性提醒

  • xp_cmdshell 允許執行任意 OS 命令,生產環境建議關閉,改用 SQL Agent / SSIS / PowerShell / CLR 預存程序匯出。
  • 若必須啟用,限制 sysadmin 角色使用,並稽核執行日誌。

替代方案:SSIS / OPENROWSET / BULK INSERT

  • SSIS:視覺化 ETL、支援複雜轉換、排程部署最佳選擇。
  • OPENROWSET:INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Text;Database=C:\;HDR=YES', 'SELECT * FROM Export.txt') SELECT * FROM Table。
  • BCP 原生模式 (-n):二進位格式、效能最高、僅限 SQL Server 之間匯入匯出。

掌握 BCP 基礎用法可快速完成臨時匯出需求,長期專案請採用 SSIS 等企業級 ETL 工具。

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