在使用 bcp 時指定相容性資料格式 (SQL Server)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsMicrosoft Fabric 中的 SQL 資料庫

本文說明資料格式屬性、欄位特定提示,以及如何將欄位逐欄位資料儲存在工具的 bcp 非 XML 格式檔案中。 這些資訊在你批量匯出 SQL Server 資料,準備大量匯入其他程式時,例如另一個資料庫程式,會很有幫助。 原始資料表中的預設資料格式(原生、字元或 Unicode)可能與另一個程式預期的資料配置不相容。 如果存在不相容性,匯出資料時必須描述資料配置。

注意

欲了解更多關於資料匯入或匯出的資料格式,請參閱 「批量匯入或匯出資料格式」。

BCP 資料格式屬性

可透過 bcp 以下資料格式屬性指定資料檔案中每個欄位的結構:

  • 檔案儲存類型

    檔案儲存類型 描述資料如何儲存在資料檔中。 你可以將資料匯出到資料檔案,格式為資料庫資料表類型(原生格式)、字元表示(字元格式),或任何支援隱式轉換的資料型態。 例如,你可以將 smallint 複製為 int。使用者定義的資料型態會匯出為其基底型別。 欲了解更多資訊,請參閱 使用 bcp 指定檔案儲存類型。

  • 前綴長度

    為了提供最精簡的檔案儲存,將原生格式的資料大量匯出到資料檔案,每個 bcp 欄位前會加上一個或多個字元表示欄位長度。 這些字元稱作 「長度前置字元」 (Length prefix characters)。 欲了解更多資訊,請參閱 使用 bcp 指定資料檔案前綴長度。

  • 欄位長度

    欄位長度會指出以字元格式表現資料所需的最大字元數。 如果資料是以原生格式儲存,則欄位長度為已知。 欲了解更多資訊,請參閱 「使用 bcp 指定場長」。

  • 欄位終止字元

    對於字元資料欄位,可選的終止字元讓你在資料檔案中標記每個欄位的結尾(使用 欄位終止符)以及每列的結尾(使用 列終止符)。 結束字元可讓讀取資料檔的程式知道某個欄位或資料列在何處結束,另一個在何處開始。 如需詳細資訊,請參閱 指定字段和數據列終止符。

領域特定提示概述

如果你以互動方式執行 in,並使用 bcp 或 out 選項,但未對來源或目標資料表中的每個資料行指定格式檔案參數 (-f) 或資料格式參數 (-n、-w、-c 或 -N),則 bcp 會依序提示你輸入上述各項屬性。 在每個提示中,會bcp根據表格欄位的 SQL Server 資料型態提供預設值。 接受所有提示的預設值,會產生與在命令列中指定原生格式(-n)相同的結果。 每個提示都會將預設值顯示於方括號中:[預設值]。 按下 Enter 鍵即可接受顯示的預設值。 若要指定預設以外的值,請在提示字元中輸入新值。

範例

下列範例使用 bcp 以互動方式將資料從 HumanResources.myTeam 資料表大量匯出到 myTeam.txt 檔案。 您必須先建立此資料表,才能執行範例。 關於表格的資訊及建立方法,請參閱 HumanResources.myTeam 範例表格。

此指令既不指定格式檔案,也未指定資料型別,因此 bcp 會提示資料格式資訊。 在 Windows 命令提示字元中,輸入:

bcp AdventureWorks.HumanResources.myTeam out myTeam.txt -T

對於每一欄,bcp 都會提示輸入欄位特定值。 下列範例將為資料表的 EmployeeID 和 Name 資料行,顯示欄位專用的提示字元,並為每個資料行建議預設的檔案儲存類型 (原生格式)。 Name 和 EmployeeID 欄位的前綴長度分別為 0 和 2。 使用者指定逗號 (,),作為每個欄位的結束字元。

Enter the file storage type of field EmployeeID [smallint]:

Enter prefix-length of field EmployeeID [0]:

Enter field terminator [none]:,

Enter the file storage type of field Name [nvarchar]:

Enter prefix length of field Name [2]:

Enter field terminator [none]:,

.

.

.

對應的提示會視需要依序顯示在各個表格欄位中。

將欄位逐欄位資料儲存在非 XML 格式的檔案中

在你指定所有表格欄位後, bcp 會提示你選擇產生一個非 XML 格式的檔案,儲存你剛剛提供的欄位資訊(見前述範例)。 如果你選擇產生格式檔,可以在匯出該資料表的資料或匯入類似結構的資料到 SQL Server 時使用它。

注意

您可以使用格式檔案,從資料檔案中將資料大量匯入到 SQL Server 執行個體,或從資料表中大量匯出資料,而不需重新指定格式。 欲了解更多資訊,請參閱 「格式化檔案以匯入或匯出資料」。

下列範例會建立一個名為 myFormatFile.fmt的非 XML 格式檔案。

Do you want to save this format information in a file? [Y/n] y

Host filename: [bcp.fmt]myFormatFile.fmt

格式檔的預設名稱是 bcp.fmt,但你也可以選擇不同的檔名。

注意

對於使用單一資料格式作為檔案儲存類型的資料檔案,例如字元或原生格式,您可以使用這個 format 選項快速建立格式檔案,無需匯出或匯入資料。 此方法簡單,且允許您建立 XML 格式檔案或非 XML 格式檔案。 欲了解更多資訊,請參閱 使用bcp建立格式檔案。