XML 以外のフォーマット ファイルについて
SQL Server 2000 以前では、一括エクスポート操作と一括インポート操作に 1 種類のフォーマット ファイルを使用していました。このフォーマット ファイルは、XML フォーマット ファイルもサポートする SQL Server 2005 以降のバージョンでもサポートされます。XML フォーマット ファイルと区別するために、元の種類のフォーマット ファイルは XML 以外のフォーマット ファイルと呼ばれます。
注 |
|---|
XML フォーマット ファイルにはいくつかの利点があります。詳細については、「データのインポートまたはエクスポート用のフォーマット ファイル」を参照してください。 |
通常、フォーマット ファイルは、次のいずれかの方法で bcp コマンドを使用することによって、特定のデータ形式用に作成されます。
bcp コマンドで format オプションを指定することで、文字データやネイティブ データなど、いずれかの種類のフォーマット ファイルを作成できます。詳細については、「フォーマット ファイルの作成」を参照してください。
各データ フィールドに対話的に指定された属性を含む XML 以外のフォーマット ファイルを作成できます。詳細については、「bcp を使用した互換性のためのデータ形式の指定」を参照してください。
注bcp コマンドで既存のフォーマット ファイルを指定すると、フォーマット ファイルに記録された値がコマンドに使用されます。ファイルの保存形式、プレフィックス長、フィールド長、フィールド ターミネータの入力を求められることはありません。
XML 以外のフォーマット ファイルは、特定の構造を持つテキスト ファイルです。XML 以外のフォーマット ファイルには、各テーブル列のファイル保存形式、プレフィックス長、フィールド長、およびフィールド ターミネータに関する情報が含まれています。
次の図は、XML 以外のフォーマット ファイルのサンプルの、フォーマット ファイル フィールドを示しています。
"バージョン" フィールドおよび "列の数" フィールドは XML 以外のフォーマット ファイルごとに 1 つだけ存在します。次の表で、各フィールドの意味を説明します。
|
フォーマット ファイル フィールド |
説明 |
|---|---|
|
バージョン |
フォーマット ファイルのバージョン番号。次に示すように、SQL Server のほとんどのバージョンでは、フォーマット ファイルのバージョンは bcp ユーティリティ (Bcp.exe) のバージョンと同じです。 SQL Server のバージョンフォーマット ファイルのバージョンbcp のバージョン1 SQL Server 7.07.07.0 SQL Server 20008.08.0 SQL Server 20059.09.0 SQL Server 200810.010.0 SQL Server 2008 R210.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 ""
注 |
|---|
この XML 以外のフォーマット ファイルのサンプルに関連するフォーマット ファイル フィールドを示す図については、このトピックの「XML 以外のフォーマット ファイルの構造」を参照してください。 |
