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