bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U joe@contoso.com
如果來賓使用者存在於特定Microsoft Entra 租使用者中,且屬於 Azure SQL Database 中具有執行 bcp 命令之資料庫許可權的群組的一部分,則會使用其來賓用戶別名(例如,keith0@adventure-works.com)。
-h “提示 [、... n]”
適用於:僅限 Windows。 Linux 和macOS上不支援。
指定在將資料大量匯入至資料表或檢視表時使用的一或多個提示選項。
ORDER (欄位 [ASC | DESC] [, ...n])
資料檔案中之資料的排序順序。 如果匯入資料時是依照資料表的叢集索引來排序,將可提升大量匯入的效能。 如果資料檔案的排序順序不同,即不是按照叢集索引鍵的順序,或者資料表上沒有叢集索引,則會忽略 ORDER 子句。 提供的資料行名稱必須是目的地資料表中的有效資料行名稱。 根據預設, bcp 會假設資料檔案沒有排序。 為了達到最佳的大量匯入效果,SQL Server 也會驗證匯入的資料是否已排序。
ROWS_PER_BATCH = bb
每一批資料的資料列數目 (如 bb)。 在未指定 -b 時使用,整個資料檔案會當成單一交易傳給伺服器。 伺服器根據 bb 值,將大量載入最佳化。
ROWS_PER_BATCH預設為未知。
KILOBYTES_PER_BATCH = cc
每一批資料的近似 KB 數 (如 cc)。
KILOBYTES_PER_BATCH預設為未知。
TABLOCK
指定在大量載入操作期間取得表級鎖定,以進行批次更新;否則,會取得列級鎖定。 此提示能顯著提升效能,因為在大量複製作業期間保持鎖定可以減少資料表上的鎖定衝突。 如果數據表沒有索引且已指定 TABLOCK,則可以從多個客戶端同時載入數據表。 根據預設,鎖定行為取決於資料表選項 table lock on bulkload。 如需詳細資訊,請參閱 sp_tableoption。
如果目標數據表是叢集數據行存放區索引,則多個並行用戶端不需要 TABLOCK 提示,因為每個並行線程都會在索引內指派個別的數據列群組,並將數據載入其中。 如需詳細資訊,請參閱 數據行存放區索引:概觀。
CHECK_CONSTRAINTS
指定在大量匯入作業期間,必須檢查目標資料表或檢視的所有約束規則。 如果沒有 CHECK_CONSTRAINTS 提示,則會忽略任何 CHECK和 FOREIGN KEY 限制,而且在作業之後,表格上的限制會標示為不受信任。
一律會強制執行 UNIQUE、PRIMARY KEY和 NOT NULL 約束條件。
在某個時候,您必須檢查整張資料表的約束條件。 如果大容量導入作業之前數據表沒有空白,重新驗證條件約束的成本可能會超過將 CHECK 條件約束套用至累加數據的成本。 因此,建議您在進行累加大量匯入期間,通常要啟用條件約束檢查。
如果輸入資料包含違反條件約束的資料列,您可能會想停用條件約束 (預設行為)。 停用 CHECK 條件約束后,您可以匯入數據,然後使用 Transact-SQL 語句來移除無效的數據。
bcp 現在會強制執行資料驗證與資料檢查,若針對資料檔案中無效的資料執行指令碼,則資料驗證與檢查作業可能會導致指令碼失敗。
max_errors 參數不適用於條件約束檢查。
FIRE_TRIGGERS
當您在 引數中使用 指定此選項時,於目的地資料表上定義的任何插入觸發程式將在大量複製操作期間執行。 如果未指定 FIRE_TRIGGERS,則不會執行插入觸發程式。
FIRE_TRIGGERS 會忽略 out、queryout和 format 自變數。
適用於:僅限 Windows。 Linux 和macOS上不支援。
指定回應檔的名稱,該檔案包含利用互動模式 (未指定 -n、-c、-w 或 -N) 執行大量複製時,對於命令提示字元中每個資料欄位問題的回覆。
如果 input_file 的開頭是連字號 (-) 或斜線 (/),請勿在 -i 與 input_file 值之間加空格。
指定空白資料行在作業過程中應保持 Null 值,而非保有插入之資料行的任何預設值。 如需詳細資訊,請參閱大量匯入期間保留 Null 或預設值 (SQL Server)。
-K application_intent
宣告連接到伺服器時的應用程式工作負載類型。 唯一可能的值是 ReadOnly。 如果未指定 -K,則 bcp 公用程式不支援對 AlwaysOn 可用性群組中的次要複本進行連線。 如需詳細資訊,請參閱將唯讀工作負載卸載至 Always On 可用性群組的次要複本。
-login_timeout
設定登入超時時間。
-l 選項會指定在您嘗試連線到伺服器時,登入 SQL Server 逾時之前的秒數。 預設登入逾時為 15 秒。 登入逾時必須是介於 0 與 65534 之間的數字。 如果提供的值不是數值或不在該範圍內,bcp 會產生錯誤訊息。 值為 0 指定無限的逾時時間。
-L 最後一行
指定要從資料表匯出或從資料檔案匯入的最後一個資料列的號碼。 這個參數需要的值應大於 (>) 0 但小於 (<) 或等於 (=) 最後一個資料列的號碼。 如果沒有這個參數,預設值是檔案中的最後一個資料列。
last_row 可以是值高達 2^63-1 的正整數。
-m max_errors
指定 bcp 作業取消前,可以出現的語法錯誤數上限。 語法錯誤也暗示著對於目標資料類型的資料轉換錯誤。
max_errors 總計不包括任何只能在伺服器偵測的錯誤,例如約束違規。
bcp 公用程式無法複製的資料列會略過,並且當成一次錯誤。 如果未納入這個選項,預設值是 10。
-m 選項也不適用於轉換 money 或 bigint 資料類型。
利用資料的原生 (資料庫) 資料類型來執行大量複製作業。 並非每個欄位都會出現這個選項的提示;它會使用原生值。
如需詳細資訊,請參閱使用原生格式匯入或是匯出資料 (SQL Server)。
適用於:僅限 Windows。 Linux 和macOS上不支援。
如果是非字元資料,請使用資料的原生 (資料庫) 資料類型執行大量複製作業;如果是字元資料,請使用 Unicode 字元執行大量複製作業。 這個選項為 -w 選項提供效能較高的替代方案,目的在於利用資料檔案,在 SQL Server 的執行個體之間轉移資料。 並非每個欄位都會出現這個提示。 如果您要轉移的資料包含 ANSI 擴充字元,而且您想利用原生模式的效能,請使用這個選項。
如需詳細資訊,請參閱使用 Unicode 原生格式匯入或匯出資料 (SQL Server)。
如果您使用 bcp 搭配 -N 將資料匯出後再匯入相同的資料表架構,若有固定長度的非 Unicode 字元欄位(例如 char(10)),可能會看到截斷警告。
可以忽略此警告。 解決這個警告的其中一種方式是使用 -n 取代 -N。
-o 輸出檔案
適用於:僅限 Windows。 Linux 和macOS上不支援。
指定接收來自命令提示字元重新導向之輸出的檔案名稱。
如果 output_file 的開頭是連字號 (-) 或斜線 (/),請勿在 -o 與 output_file 值之間加空格。
-P 密碼
指定 登入識別碼的密碼。 如果未使用這個選項,bcp 命令會提示您輸入密碼。 如果在不使用密碼的命令提示字元結尾使用此選項,bcp 會使用預設密碼 (NULL)。
Important
請勿使用空白密碼。 請使用增強式密碼。
若要遮蓋密碼,請勿指定 -P 選項以及 -U 選項。 相反地,在指定 bcp 以及 -U 選項和其他開關(不要特別指定 -P)後,按下 Enter 鍵,指令就會提示你輸入密碼。 這個方法可確保在輸入密碼時遮蓋密碼。
如果 password 的開頭是連字號 (-) 或斜線 (/),請勿在 -P 與 password值之間加空格。
若要遮蓋密碼,請勿指定 -P 選項以及 -U 選項。 相反地,在指定 bcp 以及 -U 選項和其他開關(不要特別指定 -P)後,按下 Enter 鍵,指令就會提示你輸入密碼。 這個方法可確保在輸入密碼時遮蓋密碼。
如果 password 的開頭是連字號 (-) 或斜線 (/),請勿在 -P 與 password值之間加空格。
搭配不含 -G的 -U 選項使用時,指定包含存取令牌的檔案 (v17.8+)。 令牌檔案應為UTF-16LE(無 BOM) 格式。
您可以透過各種方法取得存取令牌。 確保存取權杖逐位元組正確非常重要,因為它會被原封不動地傳送。 以下是取得存取令牌的範例命令。 此命令會使用 Azure CLI 和 Linux 命令,並以適當的格式將它儲存至檔案。 如果您的系統或終端機的預設編碼不是 ASCII 或 UTF-8,您可能需要調整 iconv 選項。 請務必小心保護產生的檔案,並在不再需要時將其刪除。
az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
在 SET QUOTED_IDENTIFIER ON 公用程式與 SQL Server 實例之間的連接中執行 語句。 請利用這個選項來指定包含空格或單引號的資料庫、擁有者、資料表或檢視表名稱。 以引弧括住整個三部分數據表或檢視名稱("")。
若要指定包含空格或單引號的資料庫名稱,您必須使用 -q 選項。
-q 不適用於傳遞給 -d 的值。
如需詳細資訊,請參閱本文中的<<備註> 一節。
-r row_term
指定資料列 (row) 結束字元。 預設值為 \n (換行符)。 您可以利用這個參數來覆寫預設的資料列結束字元。 如需詳細資訊,請參閱指定字段和數據列終止符(SQL Server)。
如果在 bcp 命令使用十六進位表示法指定資料列結束字元,該值將會在 0x00 處截斷。 例如,指定 0x410041 時會使用 0x41。
如果 row_term 的開頭是連字號 (-) 或斜線 (/),請勿在 -r 與 row_term 值之間加空格。
指定要使用針對用戶端電腦地區設定定義的區域格式,將貨幣、日期和時間資料大量複製到 SQL Server 中。 依預設,會忽略地區設定。
-S [server_name[\instance_name]]
指定要連線的 SQL Server 實例名稱,或如果使用 -D,則為 DSN。
如果未指定任何伺服器,bcp 公用程式會連接至本機電腦的 SQL Server 預設執行個體。 透過網路上的遠端電腦或本機具名執行個體執行 bcp 指令時,此選項為必要選項。 若要連線至伺服器上的 SQL Server 預設執行個體,只要指定 server_name。 若要連接至 SQL Server 的具名執行個體,請指定 server_name**\**instance_name。
-t 欄位術語
指定欄位結束字元。 預設值為 \t(Tab 字元)。 請利用這個參數來覆蓋預設的欄位結束字元。 如需詳細資訊,請參閱指定字段和數據列終止符(SQL Server)。
如果在 bcp 命令使用十六進位表示法指定欄位結束字元,該值將會在 0x00 處截斷。 例如,指定 0x410041 時會使用 0x41。
如果 field_term 的開頭是連字號 (-) 或斜線 (/),請勿在 -t 與 field_term 值之間加空格。
指定 bcp 公用程式使用整合式安全性的信任連線來連線至 SQL Server。 網路使用者的安全性認證、login_id 及 password 並非必要選項。 如果未指定 -T,則必須指定 -U 與 -P 才能順利登入。
Important
bcp 公用程式使用整合式安全性以信任連線連線至 SQL Server 時,請使用 -T 選項 (信任連線),而非使用者名稱和密碼的組合。
bcp 公用程式連線到 SQL Database 或 Azure Synapse Analytics 時,不支援使用 Windows 驗證或 Microsoft Entra 驗證。 請使用 -U 和 -P 選項。
-U login_id
指定用來連線至 SQL Server 的登入識別碼。
適用於: BCP 版本 18 及以上版本。
信任伺服器證書。 搭配連線的 [加密] 選項使用時,請使用自我簽署的伺服器證書來啟用加密。
報告 bcp 公用程式版本號碼和著作權。
-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 }
適用於:僅限 Windows。 Linux 和macOS上不支援。
利用舊版 SQL Server 的資料類型執行大量複製作業。 不是每個欄位都會出現這個選項的提示;它會使用預設值。
80 = SQL Server 2000 (8.x)