Share via


使用 bcp 指定相容性的資料格式

如果大量匯出 Microsoft SQL Server 資料是為了要將其大量匯入至另一個程式,例如另一個資料庫程式,則在來源資料表中的預設資料格式 (原生、字元或 Unicode) 可能和其他程式所預期的資料配置不相容。如果匯出資料時發生了不相容的狀況,您就必須描述資料配置的方式。

[!附註]

如果不熟悉匯入或匯出資料的資料格式,請參閱<用於匯入或匯出資料的資料格式>。

bcp 命令讓您可以根據下列資料格式屬性,指定資料檔中每個欄位的結構:

  • 檔案儲存類型

    檔案儲存類型描述資料如何儲存在資料檔中。資料可以依其資料庫資料表類型 (原生格式)、依其字元表示 (字元格式),或者依支援隱含轉換的任何資料類型匯出至資料檔;例如,將 smallint 複製為 int。使用者自訂資料類型會依其基底類型匯出。如需詳細資訊,請參閱<使用 bcp 指定檔案儲存類型>。

  • 前置長度

    為了讓原生格式的資料大量匯出至資料檔時,能夠有最精簡的檔案儲存方式,bcp 命令在每一個欄位前面都有加上一或多個字元,指出欄位的長度。這些字元稱作「長度前置字元」。如需詳細資訊,請參閱<在資料檔中指定前置長度>。

  • 欄位長度

    欄位長度會指出以字元格式表現資料所需的最大字元數。如果資料是以原生格式儲存,則欄位長度為已知。如需詳細資訊,請參閱<使用 bcp 指定欄位長度>。

  • 欄位結束字元

    針對字元資料欄位,選擇性的結束字元讓您可以標示資料檔中每個欄位的結尾 (使用「欄位結束字元」),以及每個資料列的結尾 (使用「資料列結束字元」)。結束字元可讓讀取資料檔的程式知道某個欄位或資料列在何處結束,另一個在何處開始。如需詳細資訊,請參閱<指定欄位和資料列結束字元>。

欄位專用提示字元的概觀

如果互動式 bcp 命令包含 inout 選項,但不包含格式檔案參數 (-f) 或資料格式參數 (-n-c-w-N),則來源資料表或目標資料表中的每個資料行,會相繼出現每個先前屬性的命令提示字元。在每個提示字元中,bcp 命令的預設值,是根據資料行的 SQL Server 資料類型而提供的。接受所有提示字元的預設值,會和在命令行上指定原生格式 (-n) 產生相同結果。每個提示都會將預設值顯示於方括號中:[default]。按下 ENTER 即可接受顯示的預設值。若要指定預設以外的值,請在提示字元中輸入新值。

範例

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

命令不會指定格式檔案,也不會指定資料類型,所以會導致 bcp 出現提示詢問資料格式資訊。在 Microsoft Windows 命令提示字元中,輸入:

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

bcp 會針對每個資料行提示欄位專用的值。下列範例將為資料表的 EmployeeID 和 Name 資料行,顯示欄位專用的提示字元,並為每個資料行建議預設的檔案儲存類型 (原生格式)。EmployeeID 和 Name 資料行的前置長度分別為 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 指定檔案儲存類型

包含在 bcp 命令中指定檔案儲存類型的相關資訊。

在資料檔中指定前置長度

包含在 bcp 命令中指定前置長度的相關資訊。

使用 bcp 指定欄位長度

包含在 bcp 命令中指定欄位長度的相關資訊。

指定欄位和資料列結束字元

包含在 bcp 命令中指定欄位和資料列結束字元的相關資訊。

字元格式資料的儲存

包含如何將字元格式資料儲存至匯出資料檔的相關資訊。