フォーマット ファイルの作成
SQL Server テーブルにデータを一括インポートしたり、テーブルからデータを一括エクスポートする場合、フォーマット ファイルを使用して、そのテーブルに関連するデータ ファイル内の各フィールドのフォーマット情報を格納できます。フォーマット ファイルを使用すると、他のデータ形式に準拠したり、他のソフトウェア プログラムからデータ ファイルを読み取るための編集をほとんど (あるいはまったく) 行うことなく、データ ファイルを出力できる柔軟なシステムが実現します。
SQL Server 2005 以降のバージョンでは、XML 以外のフォーマット ファイルと XML フォーマット ファイルの 2 種類がサポートされます。XML 以外のフォーマットとは、以前のバージョンの SQL Server でサポートされる従来のフォーマットです。
通常は、XML フォーマット ファイルと XML 以外のフォーマット ファイルの間には互換性があります。ただし、XML フォーマット ファイルの方が XML 以外のフォーマット ファイルよりも優れた点がいくつかあるので、新しいフォーマット ファイルには XML 構文を使用することをお勧めします。詳細については、「フォーマット ファイルの概要」を参照してください。
注意 |
---|
フォーマット ファイルの読み取りに使用される bcp ユーティリティ (Bcp.exe) のバージョンは、フォーマット ファイルの作成に使用されたバージョン、またはそれ以降のバージョンである必要があります。たとえば、SQL Server 2008bcp では、SQL Server 2005bcp によって生成されるバージョン 9.0 のフォーマット ファイルを読み取ることができますが、SQL Server 2005bcp では、SQL Server 2008bcp によって生成されるバージョン 10.0 のフォーマット ファイルを読み取ることができません。 |
このトピックでは、bcp ユーティリティを使用して、特定のテーブルのフォーマット ファイルを作成する方法について説明します。フォーマット ファイルは、指定されたデータ型のオプション (-n、-c、-w、または -N)、およびテーブルやビューの区切り記号から構成されます。
XML 以外のフォーマット ファイルの作成
bcp コマンドを使用してフォーマット ファイルを作成するには、format 引数を指定し、データ ファイルのパスの代わりに nul を使用します。format オプションには、次に示す -f オプションが必要です。
bcptable_or_viewformat nul -fformat_file_name
注意 |
---|
XML 以外のフォーマット ファイルであることを区別するには、MyTable.fmt のように、ファイル名拡張子として .fmt を使用することをお勧めします。 |
XML 以外のフォーマット ファイルの構造およびフィールドについては、「XML 以外のフォーマット ファイルについて」を参照してください。
例
ここでは、bcp コマンドを使用して XML 以外のフォーマット ファイルを作成する方法を示す次の例について説明します。
A. ネイティブ データ用の XML 以外のフォーマット ファイルの作成
B. 文字データ用の XML 以外のフォーマット ファイルの作成
C. Unicode ネイティブ データ用の XML 以外のフォーマット ファイルの作成
D. Unicode 文字データ用の XML 以外のフォーマット ファイルの作成
この例では、AdventureWorks サンプル データベースの HumanResources.Department テーブルを使用しています。HumanResources.Department テーブルには、DepartmentID、Name、GroupName、および ModifiedDate の 4 つの列があります。このテーブルの定義の詳細については、「Department テーブル (AdventureWorks)」を参照してください。
注意 |
---|
Adventure Works Cycles は、データベースの概念とシナリオを説明するために使用する架空の製造会社です。 |
A. ネイティブ データ用の XML 以外のフォーマット ファイルの作成
次の例では、AdventureWorksHumanResources.Department テーブルに対して Department-n.xml という名前の XML フォーマット ファイルを作成します。このフォーマット ファイルでは、ネイティブ データ型が使用されます。生成されたフォーマット ファイルの内容をコマンドの後に示します。
bcp コマンドには、次の修飾子が含まれます。
修飾子 |
説明 |
---|---|
formatnul-fformat_file |
XML 以外のフォーマット ファイルを指定します。 |
-n |
ネイティブ データ型を指定します。 |
-T |
bcp ユーティリティが統合セキュリティを使用した信頼関係接続を使用して SQL Server に接続することを指定します。-T を指定しない場合、正常にログインするには、-U および -P を指定する必要があります。 |
Windows コマンド プロンプトで、次の bcp コマンドを入力します。
bcp AdventureWorks.HumanResources.Department format nul -T -n -f Department-n.fmt
生成されるフォーマット ファイル Department-n.fmt には、次の情報が含まれます。
9.0
4
1 SQLSMALLINT 0 2 "" 1 DepartmentID ""
2 SQLNCHAR 2 100 "" 2 Name SQL_Latin1_General_CP1_CI_AS
3 SQLNCHAR 2 100 "" 3 GroupName SQL_Latin1_General_CP1_CI_AS
4 SQLDATETIME 0 8 "" 4 ModifiedDate ""
詳細については、「XML 以外のフォーマット ファイルについて」を参照してください。
B. 文字データ用の XML 以外のフォーマット ファイルの作成
次の例では、AdventureWorksHumanResources.Department テーブルに対して Department.fmt という名前の XML フォーマット ファイルを作成します。このフォーマット ファイルでは、文字データ形式と、既定と異なるフィールド ターミネータ (,) が使用されます。生成されたフォーマット ファイルの内容をコマンドの後に示します。
bcp コマンドには、次の修飾子が含まれます。
修飾子 |
説明 |
---|---|
formatnul-fformat_file |
XML 以外のフォーマット ファイルを指定します。 |
-c |
文字データを指定します。 |
-T |
bcp ユーティリティが統合セキュリティを使用した信頼関係接続を使用して SQL Server に接続することを指定します。-T を指定しない場合、正常にログインするには、-U および -P を指定する必要があります。 |
Windows コマンド プロンプトで、次の bcp コマンドを入力します。
bcp AdventureWorks.HumanResources.Department format nul -c -f Department-c.fmt -T
生成されるフォーマット ファイル Department-c.fmt には、次の情報が含まれます。
9.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 以外のフォーマット ファイルについて」を参照してください。
C. Unicode ネイティブ データ用の XML 以外のフォーマット ファイルの作成
HumanResources.Department テーブルの、Unicode ネイティブ データ用の XML 以外のフォーマット ファイルを作成するには、次のコマンドを使用します。
bcp AdventureWorks.HumanResources.Department format nul -T -N -f Department-n.fmt
Unicode ネイティブ データの使用方法の詳細については、「Unicode ネイティブ形式を使用したデータのインポートまたはエクスポート」を参照してください。
D. Unicode 文字データ用の XML 以外のフォーマット ファイルの作成
既定のターミネータを使用する HumanResources.Department テーブルの、Unicode 文字データ用の XML 以外のフォーマット ファイルを作成するには、次のコマンドを使用します。
bcp AdventureWorks.HumanResources.Department format nul -T -w -f Department-w.fmt
Unicode 文字データの使用方法の詳細については、「Unicode 文字形式を使用したデータのインポートまたはエクスポート」を参照してください。
XML フォーマット ファイルの作成
bcp コマンドを使用してフォーマット ファイルを作成するには、format 引数を指定し、データ ファイルのパスの代わりに nul を使用します。format オプションには常に -f オプションが必要です。XML フォーマット ファイルを作成するには、次に示すように -x オプションも指定する必要があります。
bcptable_or_viewformat nul-fformat_file_name-x
注意 |
---|
XML フォーマット ファイルであることを区別するには、MyTable.xml のように、ファイル名拡張子として .xml を使用することをお勧めします。 |
XML フォーマット ファイルの構造およびフィールドについては、「XML フォーマット ファイルについて」を参照してください。構文については、「XML フォーマット ファイルのスキーマ構文」を参照してください。例については、「XML フォーマット ファイルのサンプル」を参照してください。
例
ここでは、bcp コマンドを使用して XML フォーマット ファイルを作成する方法を示す次の例について説明します。
A. 文字データ用の XML フォーマット ファイルの作成
B. ネイティブ データ用の XML フォーマット ファイルの作成
この例では、AdventureWorks サンプル データベースの HumanResources.Department テーブルを使用しています。HumanResources.Department テーブルには、DepartmentID、Name、GroupName、および ModifiedDate の 4 つの列があります。このテーブルの定義の詳細については、「Department テーブル (AdventureWorks)」を参照してください。
注意 |
---|
Adventure Works Cycles は、データベースの概念とシナリオを説明するために使用する架空の製造会社です。 |
A. 文字データ用の XML フォーマット ファイルの作成
次の例では、AdventureWorksHumanResources.Department テーブルに対して Department.xml という名前の XML フォーマット ファイルを作成します。このフォーマット ファイルでは、文字データ形式と、既定と異なるフィールド ターミネータ (,) が使用されます。生成されたフォーマット ファイルの内容をコマンドの後に示します。
bcp コマンドには、次の修飾子が含まれます。
修飾子 |
説明 |
---|---|
formatnul-fformat_file-x |
XML フォーマット ファイルを指定します。 |
-c |
文字データを指定します。 |
-t, |
コンマ (,) をフィールド ターミネータとして指定します。
注意
データ ファイルで既定のフィールド ターミネータ (\t) が使用されている場合、-t スイッチは不要です。
|
-T |
bcp ユーティリティが統合セキュリティを使用した信頼関係接続を使用して SQL Server に接続することを指定します。-T を指定しない場合、正常にログインするには、-U および -P を指定する必要があります。 |
Windows コマンド プロンプトで、次の bcp コマンドを入力します。
bcp AdventureWorks.HumanResources.Department format nul -c -x -f Department-c..xml –t, -T
生成されるフォーマット ファイル Department-c.xml には、次の XML 要素が含まれます。
<?xml version="1.0"?>
<BCPFORMAT xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="7"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="24"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>
このフォーマット ファイルの構文については、「XML フォーマット ファイルのスキーマ構文」を参照してください。文字データについては、「文字形式を使用したデータのインポートまたはエクスポート」を参照してください。
B. ネイティブ データ用の XML フォーマット ファイルの作成
次の例では、AdventureWorksHumanResources.Department テーブルに対して Department-n.xml という名前の XML フォーマット ファイルを作成します。このフォーマット ファイルでは、ネイティブ データ型が使用されます。生成されたフォーマット ファイルの内容をコマンドの後に示します。
bcp コマンドには、次の修飾子が含まれます。
修飾子 |
説明 |
---|---|
formatnul-fformat_file-x |
XML フォーマット ファイルを指定します。 |
-n |
ネイティブ データ型を指定します。 |
-T |
bcp ユーティリティが統合セキュリティを使用した信頼関係接続を使用して SQL Server に接続することを指定します。-T を指定しない場合、正常にログインするには、-U および -P を指定する必要があります。 |
Windows コマンド プロンプトで、次の bcp コマンドを入力します。
bcp AdventureWorks.HumanResources.Department format nul -x -f Department-n..xml -n -T
生成されるフォーマット ファイル Department-n.xml には、次の XML 要素が含まれます。
<?xml version="1.0"?>
<BCPFORMAT xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="NativeFixed" LENGTH="2"/>
<FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="NativeFixed" LENGTH="8"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>
このフォーマット ファイルの構文については、「XML フォーマット ファイルのスキーマ構文」を参照してください。ネイティブ データの使用方法については、「ネイティブ形式を使用したデータのインポートまたはエクスポート」を参照してください。
データ フィールドからテーブル列へのマッピング
bcp によって作成されたフォーマット ファイルには、すべてのテーブル列が順番に記述されます。テーブル行を再配置または削除する場合は、フォーマット ファイルを変更できます。その結果、フィールドとテーブル列とが直接マップされないデータ ファイル用に、フォーマット ファイルをカスタマイズできます。詳細については、次のトピックを参照してください。