命令列工具,基於 DB-Library,支援平行高效處理大量資料。可直接匯出資料表/檢視,或透過 SELECT 過濾匯出。支援預設格式或格式檔案控制匯入匯出細節。
| 動作 | 參數 | 說明 |
|---|---|---|
| 匯入 | in | 後接來源檔案名 |
| 匯出 | out | 後接目的檔案名 |
| SQL 陳述式匯出 | queryout | 資料來源為 SQL 陳述式 |
| 產生格式檔 | format | 後接格式檔名 |
-f format_file:格式檔名(in/out 讀取既有,format 產生新檔)。-x:搭配 -f 產生 XML 格式檔。-F first_row、-L last_row:指定起迄列。-c:字元模式(char 型別、無前置長度、Tab 分欄、換行分列)。-w:Unicode 模式(nchar、Tab/換行分隔)。-t field_term、-r row_term:自訂欄位/列分隔符。-S server[\instance]:指定目標執行個體。-U login_id、-P password:SQL 驗證(需雙引號括住)。-T:信任連線(Windows 驗證),與 -U/-P 擇一。-k:空值欄位插入 NULL 而非預設值。BCP AdventureWorks.Sales.Currency out c:\currency1.txt -c -T
輸出 105 列,約 10500 rows/sec。
EXEC master..xp_cmdshell 'BCP "SELECT TOP 20 * FROM AdventureWorks.Sales.Currency" queryout c:\currency2.txt -F 10 -L 13 -c -T'
-- 文字格式 EXEC master..xp_cmdshell 'BCP AdventureWorks.Sales.Currency format nul -f c:\currency_format1.fmt -c -T' -- XML 格式 EXEC master..xp_cmdshell 'BCP AdventureWorks.Sales.Currency format nul -f c:\currency_format2.fmt -x -c -T'
格式檔記錄欄位型別、長度、分隔符、名稱等中繼資料。
-- 建立目標表 SELECT TOP 0 * INTO AdventureWorks.Sales.Currency1 FROM AdventureWorks.Sales.Currency; -- 一般匯入 EXEC master..xp_cmdshell 'BCP AdventureWorks.Sales.Currency1 in c:\currency1.txt -c -T' -- 指定列區間 + 文字格式檔 EXEC master..xp_cmdshell 'BCP AdventureWorks.Sales.Currency1 in c:\currency1.txt -F 10 -L 13 -c -f c:\currency_format1.fmt -T' -- 指定列區間 + XML 格式檔 EXEC master..xp_cmdshell 'BCP AdventureWorks.Sales.Currency1 in c:\currency1.txt -F 10 -L 13 -c -x -f c:\currency_format2.fmt -T'
格式檔可過濾不符合欄位長度等條件的資料列。
BCP 可透過 xp_cmdshell 嵌入 T-SQL,進而整合至 Delphi、C# 等用戶端程式,賦予應用程式匯入匯出能力。