XML 以外のフォーマット ファイルについて

SQL Server 2000 以前では、一括エクスポート操作と一括インポート操作に 1 種類のフォーマット ファイルを使用していました。このフォーマット ファイルは、XML フォーマット ファイルもサポートする SQL Server 2005 以降のバージョンでもサポートされます。XML フォーマット ファイルと区別するために、元の種類のフォーマット ファイルは XML 以外のフォーマット ファイルと呼ばれます。

注意

XML フォーマット ファイルにはいくつかの利点があります。詳細については、「データのインポートまたはエクスポート用のフォーマット ファイル」を参照してください。

通常、フォーマット ファイルは、次のいずれかの方法で bcp コマンドを使用することによって、特定のデータ形式用に作成されます。

  • bcp コマンドで format オプションを指定することで、文字データやネイティブ データなど、いずれかの種類のフォーマット ファイルを作成できます。詳細については、「フォーマット ファイルの作成」を参照してください。

  • 各データ フィールドに対話的に指定された属性を含む XML 以外のフォーマット ファイルを作成できます。詳細については、「bcp を使用した互換性のためのデータ形式の指定」を参照してください。

    注意

    bcp コマンドで既存のフォーマット ファイルを指定すると、フォーマット ファイルに記録された値がコマンドに使用されます。ファイルの保存形式、プレフィックス長、フィールド長、フィールド ターミネータの入力を求められることはありません。

XML 以外のフォーマット ファイルの構造

XML 以外のフォーマット ファイルは、特定の構造を持つテキスト ファイルです。XML 以外のフォーマット ファイルには、各テーブル列のファイル保存形式、プレフィックス長、フィールド長、およびフィールド ターミネータに関する情報が含まれています。

次の図は、XML 以外のフォーマット ファイルのサンプルの、フォーマット ファイル フィールドを示しています。

非 XML 形式ファイルのフィールドの指定

"バージョン" フィールドおよび "列の数" フィールドは XML 以外のフォーマット ファイルごとに 1 つだけ存在します。次の表で、各フィールドの意味を説明します。

フォーマット ファイル フィールド

説明

バージョン

フォーマット ファイルのバージョン番号。次に示すように、SQL Server のほとんどのバージョンでは、フォーマット ファイルのバージョンは bcp ユーティリティ (Bcp.exe) のバージョンと同じです。

SQL Server のバージョンフォーマット ファイルのバージョンbcp のバージョン1
SQL Server 7.07.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 このバージョン番号は Transact-SQL ではなく bcp だけで認識されます。

注意
フォーマット ファイルの読み取りに使用される bcp ユーティリティのバージョンは、フォーマット ファイルと同じかまたはそれ以降のバージョンである必要があります。たとえば、SQL Server 2008bcp では、SQL Server 2005bcp によって生成されるバージョン 9.0 のフォーマット ファイルを読み取ることができますが、SQL Server 2005bcp では、SQL Server 2008 または SQL Server 2008 R2 の bcp によって生成されるバージョン 10.0 のフォーマット ファイルを読み取ることができません。

列の数

データ ファイルのフィールドの数。この数は、すべての行で同じでなくてはなりません。

他のフォーマット ファイル フィールドには、一括インポートまたは一括エクスポートされるデータ フィールドが記述されます。各データ フィールドは、フォーマット ファイル内に個別の行を必要とします。フォーマット ファイルの各行には、次の表で示すフォーマット ファイル フィールドの値が含まれます。

フォーマット ファイル フィールド

説明

ホスト ファイル フィールドの順序

データ ファイル内の各フィールドの位置を示す番号。行の最初のフィールドは 1 になり、それ以降のフィールドにも順番に番号が付けられます。

ホスト ファイル データ型

データ ファイルの特定のフィールドに格納されているデータ型。ASCII データ ファイルでは、SQLCHAR を使用します。ネイティブ形式のデータ ファイルでは、既定のデータ型を使用します。詳細については、「bcp を使用したファイル ストレージ型の指定」を参照してください。

プレフィックス長

フィールドのプレフィックス長文字の数。有効なプレフィックス長は、0、1、2、4、および 8 です。プレフィックス長を指定しない場合は 0 を設定します。フィールドに NULL データ値が含まれる場合には、プレフィックス長を指定する必要があります。詳細については、「データ ファイルのプレフィックス長の指定」を参照してください。

ホスト ファイルのデータ長

データ ファイルの特定フィールドに格納されるデータ型の最大バイト数。

区切り形式のテキスト ファイル用に XML 以外のフォーマット ファイルを作成する場合、各データ フィールドのホスト ファイルのデータ長に 0 を指定できます。プレフィックス長が 0 で、ターミネータが含まれている、区切り形式のテキスト ファイルをインポートする場合、フィールドで使用されるストレージ領域のサイズはデータにターミネータを加えた長さであるため、フィールド長の値は無視されます。

詳細については、「bcp を使用したフィールド長の指定」を参照してください。

ターミネータ

データ ファイルのフィールドを分割する区切り文字。一般的なターミネータは、コンマ (,)、タブ (\t)、および行末 (\r\n) です。詳細については、「フィールド ターミネータと行ターミネータの指定」を参照してください。

サーバーの列の順序

SQL Server テーブルで列が表示される順序。たとえば、データ ファイルの 4 番目のフィールドが、SQL Server テーブルの 6 番目の列にマップされる場合、4 番目のフィールドのサーバーの列の順序は 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     ""

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 以外のフォーマット ファイルの構造」を参照してください。