在自動化部署、資料遷移、ETL 排程等場景中,命令列工具是 DBA 與開發人員的得力助手。SQL Server 提供 bcp(大量複製程式)與 sqlcmd 兩大核心命令列工具,支援高效、腳本化的資料匯入匯出操作。
bcp 基於 DB-Library,支援平行處理,能高效處理大批量資料移動。它提供四種操作模式:
| 參數 | 說明 |
|---|---|
| -f format_file | 指定格式化檔路徑。配合 in/out 使用現有檔,配合 format 產生新檔。 |
| -x | 配合 -f 產生 XML 格式的格式化檔。 |
| -F first_row / -L last_row | 指定匯入匯出的起始/結束列號,支援分批處理。 |
| -c | 使用字元模式,欄位分隔符 \t,列分隔符 \n,無前置長度。 |
| -w | 使用 Unicode 字元模式,儲存類型為 nchar。 |
| -t / -r | 自訂欄位/列分隔符,預設分別為 \t 和 \n。 |
| -S server[\instance] | 指定目標伺服器實例,預設連接本機預設實例。 |
| -U / -P | SQL 驗證登入帳號密碼。 |
| -T | 使用信任連接(Windows 驗證),互斥 -U/-P。 |
| -k | 空值欄位插入 NULL 而非預設值。 |
-- 信任連接匯出資料表
bcp AdventureWorks.Sales.Currency out c:\currency1.txt -c -T
-- 密碼驗證匯出查詢結果
bcp "SELECT TOP 20 * FROM AdventureWorks.Sales.Currency" queryout c:\currency2.txt -c -U "sa" -P "password"
-- 結合 -F/-L 匯出指定範圍列
bcp "SELECT TOP 20 * FROM AdventureWorks.Sales.Currency" queryout c:\currency2.txt -F 10 -L 13 -c -T
sqlcmd 是取代舊版 osql/isql 的現代化命令列查詢工具,支援互動模式與腳本執行模式。
sqlcmd 連接本機預設實例(信任連接)。EXIT 結束會話。sqlcmd -S localhost -d DatabaseName -U sa -P 12345 -i d:\test.sql
參數說明:-S 伺服器,-d 資料庫,-U/-P 帳號密碼,-i 輸入腳本檔。