bcp {database_name}.{schema_name}.{table_name} {in|out|queryout|format}
{data_file}
[-S server_name[\instance_name]]
[-U login_id] [-P password]
[-T]
[-c|-w|-N|-n]
[-t field_term] [-r row_term]
[-b batch_size] [-h "hints"]
| 參數 | 說明 | 範例/備註 |
|---|---|---|
database.schema.table | 來源/目標物件三部曲名稱 | TrialPO.dbo.T_仕入伝票累積 |
out | 匯出模式 (資料庫 → 檔案) | 對應 in (匯入)、queryout (查詢結果匯出) |
data_file | 資料檔案完整路徑 | d:\temp\songsongming.dat (建議用 .dat/.txt 非 .xls) |
-S server_name | 目標 SQL Server 執行個體名稱 | -S YNTDEV083 或 -S 192.168.1.100,1433 |
-U login_id | SQL 登入帳號 | -U sa |
-P password | 密碼 (大小寫敏感,空密碼用 -P "") | -P "" 或省略 -P 提示輸入 |
-T | 信任連線 (Windows 整合驗證) | 互斥 -U/-P,生產環境推薦 |
-N | 原生格式 (Native) - 保留資料型別、高效能、不可讀 | SQL Server 之間匯出匯入首選,檔案較小 |
-c | 字元格式 (Char) - 可讀、跨平台、體積大 | 需指定 -t (欄位分隔符) -r (列分隔符),預設 Tab/\n |
-w | Unicode 字元格式 - 支援多語言 | 預設分隔符為 Tab/\n,適合含中日韓文字資料 |
-n | 原生格式 (舊版相容) | 不建議新專案使用 |
-b batch_size | 批次大小 (每批提交筆數) | -b 10000 減少記錄檔壓力、提升並發 |
-h "hints" | 大量載入 Hint (如 TABLOCK, ORDER) | -h "TABLOCK, ORDER(Gid)" |
-f format_file | 格式化檔案路徑 (非 XML 格式) | 複雜對應關係時使用 |
-x | 產生 XML 格式化檔 (搭配 -f) | 可視化編輯欄位對應 |
bcp TrialPO.dbo.T_仕入伝票累積 out d:\backup\T_仕入伝票累積.dat -S YNTDEV083 -T -N -b 50000
-T)-N) 保留精確型別,檔案最小、速度最快bcp TrialPO.dbo.T_仕入伝票累積 out d:\export\T_仕入伝票累積.txt -S YNTDEV083 -U sa -P "StrongP@ssw0rd" -c -t "|" -r "\n" -C 65001
-c) 產生可讀文字檔-t "|" 避免資料內含逗號/Tab 衝突-C 65001 指定 UTF-8 編碼 (支援中日文),預設為 ANSI/OEMbcp "SELECT * FROM TrialPO.dbo.T_仕入伝票累積 WHERE fariqi >= '2024-01-01'" queryout d:\export\2024_data.txt -S YNTDEV083 -T -c -t "," -r "\n"
-- 原生格式匯入
bcp TrialPO.dbo.T_仕入伝票累積 in d:\backup\T_仕入伝票累積.dat -S YNTDEV083 -T -N -b 50000 -h "TABLOCK"
-- 字元格式匯入 (需對應 -t -r -C)
bcp TrialPO.dbo.T_仕入伝票累積 in d:\export\T_仕入伝票累積.txt -S YNTDEV083 -T -c -t "|" -r "\n" -C 65001
-U、-P、-S、-N、-T 必須大寫,小寫會被視為不同參數或報錯。-S YNTDEV083 或 -SYNTDEV083),但值包含空格時必須加雙引號。-C 65001 (UTF-8) 或 -w (Unicode),否則匯入後變亂碼。.xls/.xlsx 非 BCP 原生支援:-c 輸出純文字無法直接開啟為 Excel,需後續用 Excel 開啟文字檔匯入精靈或程式庫轉換。SELECT 權限;匯入需 INSERT、ALTER TABLE (若用 TABLOCK) 權限。針對欄位順序不一、型別轉換、跳過欄位等複雜場景,先產生格式化檔:
bcp TrialPO.dbo.T_仕入伝票累積 format nul -f d:\fmt\T_仕入伝票累積.fmt -S YNTDEV083 -T -N
-- 或產生 XML 格式化檔 (SQL Server 2005+)
bcp TrialPO.dbo.T_仕入伝票累積 format nul -f d:\fmt\T_仕入伝票累積.xml -x -S YNTDEV083 -T -N
編輯 .fmt 或 .xml 調整欄位對應、長度、終止符,再匯入時指定 -f fmt_file。