Share via


了解非 XML 格式檔案

在 SQL Server 2000 和舊版中,大量匯出和匯入只能使用一種格式檔案。這在 SQL Server 2005 及更新的版本中仍然受支援 (這些版本另外也支援 XML 格式檔案)。為了要和原始類型的格式檔案區分,這種格式檔案稱為「非 XML 格式檔案」。

[!附註]

XML 格式檔案提供了許多優點。如需詳細資訊,請參閱<用於匯入或匯出資料的格式檔案>。

通常,可以透過下列其中一種方法,使用 bcp 命令來建立特定資料格式的格式檔案:

  • 您可以在 bcp 命令中指定 format 選項,建立任一類型的格式檔案,例如字元資料或原生資料。如需詳細資訊,請參閱<建立格式檔案>。

  • 您可以建立非 XML 格式檔案,其中包含以互動方式,針對每個資料欄位所指定的屬性。如需詳細資訊,請參閱<使用 bcp 指定相容性的資料格式>。

    [!附註]

    bcp 命令中指定現有的格式檔案時,命令會使用記錄在格式檔案中的值,而且不提示您輸入檔案儲存類型、前置長度、欄位長度或欄位結束字元。

非 XML 格式檔案的結構

非 XML 格式檔案是具有特定結構的文字檔。非 XML 格式檔案包含每個資料表資料行的檔案儲存類型、前置長度、欄位長度和欄位結束字元等相關資訊。

下圖說明非 XML 格式範例檔案的格式檔案欄位。

識別非 XML 格式檔案的欄位

VersionNumber of columns 欄位只出現一次。下表描述其意義。

格式檔案欄位

描述

版本

格式檔案的版本號碼。對於大部分 SQL Server 版本而言,格式檔案版本與 bcp 公用程式 (Bcp.exe) 相同,如下所示:

SQL Server 版本格式檔案版本bcp 版本1
SQL Server 7.0 版7.07.0
SQL Server 2000 8.08.0
SQL Server 2005 9.09.0
SQL Server 2008 10.010.0
SQL Server 2008 R2 10.010.50

1 只能由 bcp 辨識版本號碼,而不是由 Transact-SQL 辨識。

附註附註
用於讀取格式檔案的 bcp 公用程式版本必須與格式檔案的版本相同或比它更新。例如,SQL Server 2008bcp 可以讀取由 SQL Server 2005bcp 產生的 9.0 版格式檔案,但是 SQL Server 2005bcp 無法讀取由 SQL Server 2008 或 SQL Server 2008 R2bcp 產生的 10.0 版格式檔案。

資料行數

資料檔的欄位數。在所有資料列中此數目必須相同。

其他格式檔案欄位描述要大量匯入或匯出的資料欄位。每個資料欄位在格式檔案中,必須有個別的資料列來代表。每個格式檔案資料列都包含下表所述之格式檔案欄位的值。

格式檔案欄位

描述

主檔案欄位順序

指出資料檔中每個欄位之位置的號碼。資料列中的第一個欄位為 1,其餘依此類推。

主檔案資料類型

指出存放在資料檔給定欄位中的資料類型。對於 ASCII 資料檔,請使用 SQLCHAR;對於原生 (Native) 格式的資料檔,請使用預設的資料類型。如需詳細資訊,請參閱<使用 bcp 指定檔案儲存類型>。

前置長度

該欄位的長度前置詞字元數。有效的前置長度為 0、1、2、4 和 8。若要避免指定長度前置詞,請將它設定為 0。如果欄位包含 NULL 資料值,就必須指定長度前置詞。如需詳細資訊,請參閱<在資料檔中指定前置長度>。

主檔案資料長度

儲存於資料檔特定欄位中的資料類型最大長度,以位元組為單位。

如果您要為分隔的文字檔建立非 XML 格式檔案,可以將每個資料欄位的主檔案資料長度指定為 0。當分隔文字檔的前置長度為 0 且已匯入結束字元,則會忽略欄位長度值,因為欄位使用的儲存空間即等於資料加上結束字元的長度。

如需詳細資訊,請參閱<使用 bcp 指定欄位長度>。

結束字元

用來分隔資料檔中欄位的分隔符號。一般的結束字元為逗點 (,)、定位點 (\t) 和行尾 (\r\n)。如需詳細資訊,請參閱<指定欄位和資料列結束字元>。

伺服器資料行順序

資料行出現在 SQL Server 資料表中的順序。例如,如果資料檔的第四個欄位對應至 SQL Server 資料表的第六個資料行,那麼第四個欄位的伺服器資料行順序為 6。

若要防止資料表中的某個資料行接收資料檔中的任何資料,請將伺服器資料行順序值設為 0。

伺服器資料行名稱

從 SQL Server 資料表複製的資料行名稱。欄位的實際名稱不是必要的,但是格式檔案中的欄位不能是空白。

資料行定序

用來儲存資料檔的字元和 Unicode 資料的定序。

[!附註]

您可以修改格式檔案,讓您從欄位數目或順序與資料表資料行數目或順序不同的資料檔,進行大量匯入。如需詳細資訊,請參閱<在大量匯入期間使用格式檔案將欄位對應到資料行>。

範例

下列範例顯示先前建立的非 XML 格式檔案 (myDepartmentIdentical-f-c.fmt)。這個檔案針對 AdventureWorks2008R2 範例資料庫的 HumanResources.Department 資料表,描述其中每個資料行的字元資料欄位。

產生的格式檔案 myDepartmentIdentical-f-c.fmt 包含下列資訊:

10.0
4
1       SQLCHAR       0       7       "\t"     1     DepartmentID     ""
2       SQLCHAR       0       100     "\t"     2     Name             SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR       0       100     "\t"     3     GroupName        SQL_Latin1_General_CP1_CI_AS
4       SQLCHAR       0       24      "\r\n"   4     ModifiedDate     ""

[!附註]

如需與這個非 XML 格式範例檔案有關的格式檔案欄位圖解,請參閱本主題稍早的「非 XML 格式檔案的結構」。