分享方式:


連接 bcp

下載 ODBC 驅動程式 (部分機器翻譯)

bcp 公用程式隨附於 Linux 和 macOS 上的 Microsoft ODBC Driver for SQL Server 中。 此頁面記錄了與 Windows 版本 bcp 的差異。

  • 欄位結束字元是定位字元 ("\t")。

  • 行結束字元是新行字元 ("\n")。

  • 字元模式是不含擴充字元的 bcp 格式檔案與資料檔案的慣用格式。

注意

命令列引數上的反斜線 '\' 必須加上引號或逸出。 例如,若要將新行字元指定為自訂資料列結束字元,您必須使用下列其中一種機制:

  • -r\\n
  • -r"\n"
  • -r'\n'

下列範例是將資料表資料列複製到文字檔的 bcp 命令引動過程:

bcp AdventureWorks2008R2.Person.Address out test.dat -Usa -Pxxxx -Sxxx.xxx.xxx.xxx

可用選項

在目前版本中,有下列語法和選項可供使用:

[database.]schema.table in data_file | out data_file

-a packet_size
指定伺服器所收送之每個網路封包的位元組數。

-b batch_size
指定每一批次匯入資料的資料列數。

-c
使用字元資料類型。

-d database_name
指定要連接的資料庫。

-D
使傳遞至 bcp -S 選項的值解譯為資料來源名稱 (DSN)。 如需詳細資訊,請參閱使用 sqlcmd 進行連線中的<sqlcmd 和 bcp 中的 DSN 支援>。

-e error_file
指定錯誤檔案的完整路徑,該錯誤檔案用來儲存 bcp 公用程式無法從檔案傳輸至資料庫的任何資料列。

-E
將匯入之資料檔案中的識別值用於識別欄位。

-f format_file
指定格式檔的完整路徑。

-F first_row
指定要從資料表匯出或從資料檔案匯入之第一個資料列的號碼。

-G
這個參數在連線到 Azure SQL Database、Azure SQL 受控執行個體或 Azure Synapse Analytics 時由用戶端使用,以指定使用 Microsoft Entra ID (前身為 Azure Active Directory)來驗證使用者。 它只能搭配 -P 選項以使用存取權杖驗證 (v17.8+)。 -G 參數至少需要 bcp 17.6 版。 若要判斷您的版本,請執行 bcp -v。

重要

- -G 選項僅適用 Azure SQL Database、Azure SQL 受控執行個體與 Azure Synapse Analytics。 Linux 或 macOS 目前不支援 Microsoft Entra 互動式驗證。 Microsoft Entra 整合式驗證需要 Microsoft ODBC Driver 17 for SQL Server 17.6.1 版或更高版本,以及正確設定的 Kerberos 環境

-k
指定空白資料行在作業期間應該保留 Null 值,而不是插入資料行的任何預設值。

-l
指定登入逾時。 -l 選項會指定在您嘗試連線到伺服器時,登入 SQL Server 逾時之前的秒數。 預設登入逾時為 15 秒。 登入逾時必須是介於 0 與 65534 之間的數字。 如果提供的值不是數值或不在該範圍內,bcp 就會產生錯誤訊息。 值為 0 指定無限的逾時時間。

-L last_row
指定要從資料表匯出或從資料檔案匯入的最後一個資料列的號碼。

-m max_errors
指定可在 bcp 作業取消前發生的語法錯誤數上限。

-n
使用資料的原生 (資料庫) 資料類型來執行大量複製作業。

-P password
指定登入識別碼的密碼。 搭配不含 -U 的 -G 選項使用時,指定包含存取權杖的檔案 (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

-q
bcp 公用程式與 SQL Server 執行個體之間的連線中,執行 SET QUOTED_IDENTIFIER ON 陳述式。

-r row_terminator
指定資料列結束字元。

-R
指定要使用針對用戶端電腦地區設定定義的區域格式,將貨幣、日期和時間資料大量複製到 SQL Server 中。

-S server
指定要連線之 SQL Server 執行個體的名稱,或者,如果使用 -D,則為 DSN。

-t field_terminator
指定欄位結束字元。

-T
指定 bcp 公用程式使用信任連接 (整合式安全性) 連線到 SQL Server。

-u
信任伺服器憑證。 (自 bcp 18 版起提供)

-U login_id
指定用來連線至 SQL Server 的登入識別碼。

-v
報告 bcp 公用程式版本號碼和著作權。

-w
使用 Unicode 字元執行大量複製作業。

在此版本中,支援 Latin-1 和 UTF-16 字元。

-Y[s|m|o]
指定連線加密模式。 選項包括 [嚴格]、[強制] 與 [選用]。 使用不含任何參數的 -Y 時,表示使用 [強制] 加密模式,因此相當於 -Ym。 (自 bcp 18 版起提供)

無法使用的選項

在目前版本中,無法使用下列語法與選項:

-C
指定資料檔案中之資料的字碼頁。

-h hint
指定將資料大量匯入資料表或檢視期間所使用的一或多個提示。

-i input_file
指定回應檔案的名稱。

-N
對於非字元資料,使用資料的原生 (資料庫) 資料類型;如果是字元資料,則使用 Unicode 字元。

-o output_file
指定接收來自命令提示字元重新導向之輸出的檔案名稱。

-V (80 | 90 | 100)
使用舊版 SQL Server 的資料類型。

-x
與 format 和 -f format_file 選項一起使用,會產生以 XML 為基礎的格式檔案,而非預設的非 XML 格式檔案。

另請參閱

使用 sqlcmd 連接
版本資訊