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

BCP 工具資料匯出完整參數指南與實戰範例

     編輯:關於SqlServer

BCP 基本語法結構

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_idSQL 登入帳號-U sa
-P password密碼 (大小寫敏感,空密碼用 -P "")-P "" 或省略 -P 提示輸入
-T信任連線 (Windows 整合驗證)互斥 -U/-P,生產環境推薦
-N原生格式 (Native) - 保留資料型別、高效能、不可讀SQL Server 之間匯出匯入首選,檔案較小
-c字元格式 (Char) - 可讀、跨平台、體積大需指定 -t (欄位分隔符) -r (列分隔符),預設 Tab/\n
-wUnicode 字元格式 - 支援多語言預設分隔符為 Tab/\n,適合含中日韓文字資料
-n原生格式 (舊版相容)不建議新專案使用
-b batch_size批次大小 (每批提交筆數)-b 10000 減少記錄檔壓力、提升並發
-h "hints"大量載入 Hint (如 TABLOCK, ORDER)-h "TABLOCK, ORDER(Gid)"
-f format_file格式化檔案路徑 (非 XML 格式)複雜對應關係時使用
-x產生 XML 格式化檔 (搭配 -f)可視化編輯欄位對應

實戰範例:匯出 TrialPO.dbo.T_仕入伝票累積

方案 A:原生格式 (高效能、SQL Server 間遷移)

bcp TrialPO.dbo.T_仕入伝票累積 out d:\backup\T_仕入伝票累積.dat -S YNTDEV083 -T -N -b 50000
  • 使用 Windows 驗證 (-T)
  • 原生格式 (-N) 保留精確型別,檔案最小、速度最快
  • 批次 5 萬筆優化記錄檔

方案 B:字元格式 (跨異构系統、人工閱讀)

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/OEM

方案 C:查詢匯出 (篩選特定條件)

bcp "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

避坑關鍵點

  1. 大小寫敏感: -U、-P、-S、-N、-T 必須大寫,小寫會被視為不同參數或報錯。
  2. 空格處理: 參數與值之間有無空格均可 (如 -S YNTDEV083 或 -SYNTDEV083),但值包含空格時必須加雙引號。
  3. 編碼陷阱: 含中日韓字元務必加 -C 65001 (UTF-8) 或 -w (Unicode),否則匯入後變亂碼。
  4. .xls/.xlsx 非 BCP 原生支援:-c 輸出純文字無法直接開啟為 Excel,需後續用 Excel 開啟文字檔匯入精靈或程式庫轉換。
  5. 權限需求: 匯出需 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。

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