フォーマット ファイルの作成 (SQL Server)Create a Format File (SQL Server)

適用対象: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

SQL ServerSQL Server テーブルにデータを一括インポートする場合、またはテーブルからデータを一括エクスポートする場合、フォーマット ファイルを使用して、他のデータ形式に準拠するため、または他のソフトウェアからデータ ファイルを読み取るための編集をほとんど (あるいはまったく) 必要としないデータ ファイルを柔軟なシステムに出力できます。When you bulk import into a SQL ServerSQL Server table or bulk export data from a table, you can use a format file to a flexible system for writing data files that requires little or no editing to comply with other data formats or to read data files from other software programs.

SQL ServerSQL Server 非 XML 形式と XML 形式の 2 種類のフォーマット ファイルがサポートされます。support two types of format file: non-XML format and XML format. XML 以外のフォーマットとは、以前のバージョンの SQL ServerSQL Serverでサポートされる従来のフォーマットです。The non-XML format is the original format that is supported by earlier versions of SQL ServerSQL Server.

通常は、XML フォーマット ファイルと XML 以外のフォーマット ファイルの間には互換性があります。Generally, XML and non-XML format files are interchangeable. ただし、XML フォーマット ファイルの方が XML 以外のフォーマット ファイルよりも優れた点がいくつかあるので、新しいフォーマット ファイルには XML 構文を使用することをお勧めします。However, we recommend that you use the XML syntax for new format files because they provide several advantages over non-XML format files.

注意

フォーマット ファイルの読み取りに使用される bcp ユーティリティ (Bcp.exe) のバージョンは、フォーマット ファイルの作成に使用されたバージョン、またはそれ以降のバージョンである必要があります。The version of the bcp utility (Bcp.exe) used to read a format file must be the same as, or later than the version used to create the format file. たとえば、SQL Server 2012 (11.x)SQL Server 2012 (11.x)bcp では、SQL Server 2008SQL Server 2008bcp によって生成されるバージョン 10.0 のフォーマット ファイルを読み取ることができますが、SQL Server 2008SQL Server 2008bcp では、SQL Server 2012 (11.x)SQL Server 2012 (11.x)bcp によって生成されるバージョン 11.0 のフォーマット ファイルを読み取ることができません。For example, SQL Server 2012 (11.x)SQL Server 2012 (11.x) bcp can read a version 10.0 format file, which is generated by SQL Server 2008SQL Server 2008 bcp, but SQL Server 2008SQL Server 2008 bcp cannot read a version 11.0 format file, which is generated by SQL Server 2012 (11.x)SQL Server 2012 (11.x) bcp.

このトピックでは、 bcp ユーティリティ を使用して、特定のテーブルのフォーマット ファイルを作成する方法について説明します。This topic describes how to use the bcp utility to create a format file for a particular table. フォーマット ファイルは、指定されたデータ型のオプション ( -n-c-w、または -N)、およびテーブルやビューの区切り記号から構成されます。The format file is based on the data-type option specified (-n, -c, -w,or -N) and the table or view delimiters.

XML 以外のフォーマット ファイルの作成Creating a Non-XML Format File

bcp コマンドを使用してフォーマット ファイルを作成するには、 format 引数を指定し、データ ファイルのパスの代わりに nul を使用します。To use a bcp command to create a format file, specify the format argument and use nul instead of a data-file path. format オプションには、次に示す -f オプションが必要です。The format option also requires the -f option, such as:

bcp table_or_view format nul -fformat_file_namebcp table_or_view format nul -fformat_file_name

注意

XML 以外のフォーマット ファイルであることを区別するには、MyTable.fmt のように、ファイル名拡張子として .fmt を使用することをお勧めします。To distinguish a non-XML format file, we recommend that you use .fmt as the file name extension, for example, MyTable.fmt.

XML 以外のフォーマット ファイルの構造およびフィールドについては、「 XML 以外のフォーマット ファイル (SQL Server)でサポートされる従来のフォーマットです。For information about the structure and fields of non-XML format files, see Non-XML Format Files (SQL Server).

使用例Examples

ここでは、 bcp コマンドを使用して XML 以外のフォーマット ファイルを作成する方法を示す次の例について説明します。This section contains the following examples that show how to use bcp commands to create a non-XML format file:

  • A.A. ネイティブ データ用の XML 以外のフォーマット ファイルの作成Creating a non-XML format file for native data

  • B.B. 文字データ用の XML 以外のフォーマット ファイルの作成Creating a non-XML format file for character data

  • C.C. Unicode ネイティブ データ用の XML 以外のフォーマット ファイルの作成Creating a non-XML format file for Unicode native data

  • D.D. Unicode 文字データ用の XML 以外のフォーマット ファイルの作成Creating a non-XML format file for Unicode character data

  • F.F. コード ページ オプションを使用したフォーマット ファイルの使用Using a format file with the code page option

この例では、 HumanResources.Department サンプル データベースの AdventureWorks2012AdventureWorks2012 テーブルを使用しています。The examples use the HumanResources.Department table in the AdventureWorks2012AdventureWorks2012 sample database. HumanResources.Department テーブルには、 DepartmentIDNameGroupName、および ModifiedDateの 4 つの列があります。The HumanResources.Department table contains four columns: DepartmentID, Name, GroupName, and ModifiedDate.

A.A. ネイティブ データ用の XML 以外のフォーマット ファイルの作成Creating a non-XML format file for native data

次の例では、 Department-n.xmlテーブルに対して AdventureWorks2012AdventureWorks2012HumanResources.Department という名前の XML フォーマット ファイルを作成します。The following example creates an XML format file, Department-n.xml, for the AdventureWorks2012AdventureWorks2012HumanResources.Department table. このフォーマット ファイルでは、ネイティブ データ型が使用されます。The format file uses native data types. 生成されたフォーマット ファイルの内容をコマンドの後に示します。The contents of the generated format file are presented after the command.

bcp コマンドには、次の修飾子が含まれます。The bcp command contains the following qualifiers.

修飾子Qualifiers [説明]Description
formatnul-f format_fileformatnul-f format_file XML 以外のフォーマット ファイルを指定します。Specifies the non-XML format file.
-n-n ネイティブ データ型を指定します。Specifies native data types.
-T-T bcp ユーティリティが統合セキュリティを使用した信頼関係接続を使用して SQL ServerSQL Server に接続することを指定します。Specifies that the bcp utility connects to SQL ServerSQL Server with a trusted connection using integrated security. -T を指定しない場合、正常にログインするには -U-P を指定する必要があります。If -T is not specified, you must specify -U and -P to successfully log in.

Windows コマンド プロンプトで、次の bcp コマンドを入力します。At the Windows command prompt, enter the following bcp command:

bcp AdventureWorks2012.HumanResources.Department format nul -T -n -f Department-n.fmt  

生成されるフォーマット ファイル Department-n.fmtには、次の情報が含まれます。The generated format file, Department-n.fmt, contains the following information:

12.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 以外のフォーマット ファイル (SQL Server)でサポートされる従来のフォーマットです。For more information, see Non-XML Format Files (SQL Server).

B.B. 文字データ用の XML 以外のフォーマット ファイルの作成Creating a non-XML format file for character data

次の例では、 Department.fmtテーブルに対して AdventureWorks2012AdventureWorks2012HumanResources.Department という名前の XML フォーマット ファイルを作成します。The following example creates an XML format file, Department.fmt, for the AdventureWorks2012AdventureWorks2012HumanResources.Department table. このフォーマット ファイルでは、文字データ形式と、既定と異なるフィールド ターミネータ (,) が使用されます。The format file uses character data formats and a non-default field terminator (,). 生成されたフォーマット ファイルの内容をコマンドの後に示します。The contents of the generated format file are presented after the command.

bcp コマンドには、次の修飾子が含まれます。The bcp command contains the following qualifiers.

修飾子Qualifiers [説明]Description
formatnul-f format_fileformatnul-f format_file XML 以外のフォーマット ファイルを指定します。Specifies a non-XML format file.
-c-c 文字データを指定します。Specifies character data.
-T-T bcp ユーティリティが統合セキュリティを使用した信頼関係接続を使用して SQL ServerSQL Server に接続することを指定します。Specifies that the bcp utility connects to SQL ServerSQL Server with a trusted connection using integrated security. -T を指定しない場合、正常にログインするには -U-P を指定する必要があります。If -T is not specified, you must specify -U and -P to successfully log in.

Windows コマンド プロンプトで、次の bcp コマンドを入力します。At the Windows command prompt, enter the following bcp command:

bcp AdventureWorks2012.HumanResources.Department format nul -c -f Department-c.fmt -T  

生成されるフォーマット ファイル Department-c.fmtには、次の情報が含まれます。The generated format file, Department-c.fmt, contains the following information:

12.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 以外のフォーマット ファイル (SQL Server)でサポートされる従来のフォーマットです。For more information, see Non-XML Format Files (SQL Server).

C.C. Unicode ネイティブ データ用の XML 以外のフォーマット ファイルの作成Creating a non-XML format file for Unicode native data

HumanResources.Department テーブルの、Unicode ネイティブ データ用の XML 以外のフォーマット ファイルを作成するには、次のコマンドを使用します。To create a non-XML format file for Unicode native data for the HumanResources.Department table, use the following command:

bcp AdventureWorks2012.HumanResources.Department format nul -T -N -f Department-n.fmt  

Unicode ネイティブデータの使用方法の詳細については、「Unicode ネイティブ形式を使用したデータのインポートまたはエクスポート (SQL Server)」を参照してください。For more information about how to use Unicode native data, see Use Unicode Native Format to Import or Export Data (SQL Server).

D.D. Unicode 文字データ用の XML 以外のフォーマット ファイルの作成Creating a non-XML format file For Unicode character data

既定のターミネータを使用する HumanResources.Department テーブルの、Unicode 文字データ用の XML 以外のフォーマット ファイルを作成するには、次のコマンドを使用します。To create a non-XML format file for Unicode character data for the HumanResources.Department table that uses default terminators, use the following command:

bcp AdventureWorks2012.HumanResources.Department format nul -T -w -f Department-w.fmt  

Unicode 文字データの使用方法の詳細については、「Unicode 文字形式を使用したデータのインポートまたはエクスポート (SQL Server)」を参照してください。For more information about how to use Unicode character data, see Use Unicode Character Format to Import or Export Data (SQL Server).

F.F. コード ページ オプションを使用したフォーマット ファイルの使用Using a format file with the code page option

bcp コマンドを使用して (つまり bcp format を使用して) フォーマット ファイルを作成する場合、照合順序/コード ページに関する情報がフォーマット ファイルに記述されます。If you create a format file using the bcp command (that is, by using bcp format), information about the collation/code page will be written in the format file.
次に、照合順序が含まれる、5 つの列があるテーブル用のフォーマット ファイルの例を示します。The following example format file for a table with 5 columns includes the collation.

13.0  
5  
1  SQLCHAR         0       0       "**\t**"         1     c_0          Cyrillic_General_CS_AS  
2  SQLCHAR         0       0       "**\t**"         2     c_1          Cyrillic_General_CS_AS  
3  SQLCHAR         0       3000    "**\t**"         3     c_2          Cyrillic_General_CS_AS  
4  SQLCHAR         0       5       "**\t**"         4     c_3          ""  
5  SQLCHAR         0       41      "!!!\r\r\n"      5     c_4          ""  
  

"bcp in -c -C65001 -f format_file ..." または "BULK INSERT/OPENROWSET ... FORMATFILE='format_file' CODEPAGE=65001 ..." を使用して SQL ServerSQL Server にデータをインポートすると、65001 を超える照合順序またはコード ページ情報のオプションが存在するようになります。If you try to import data into SQL ServerSQL Server using bcp in -c -C65001 -f format_file ..." or "BULK INSERT/OPENROWSET ... FORMATFILE='format_file' CODEPAGE=65001 ...", information about the collation/code page will have priority over 65001 option.
そのため、フォーマット ファイルを生成する場合、 SQL ServerSQL Serverにデータをインポートし直す前に、生成されたフォーマット ファイルから照合順序の情報を削除する必要があります。Therefore, if you generate a format file, you must manually delete the collation info from the generated format file before you start importing data back into SQL ServerSQL Server.
次に照合順序情報を含まないフォーマット ファイルの例を示します。The following is an example of the format file without the collation info.

13.0  
5  
1  SQLCHAR         0       0       "**\t**"         1     c_0              ""  
2  SQLCHAR         0       0       "**\t**"         2     c_1              ""  
3  SQLCHAR         0       3000    "**\t**"         3     c_2              ""  
4  SQLCHAR         0       5       "**\t**"         4     c_3              ""  
5  SQLCHAR         0       41      "!!!\r\r\n"      5     c_4              ""  

XML フォーマット ファイルの作成Creating an XML Format File

bcp コマンドを使用してフォーマット ファイルを作成するには、 format 引数を指定し、データ ファイルのパスの代わりに nul を使用します。To use a bcp command to create a format file, specify the format argument and use nul instead of a data-file path. format オプションには常に -f オプションが必要です。XML フォーマット ファイルを作成するには、次に示すように -x オプションも指定する必要があります。The format option always requires the -f option, and to create an XML format file, you must also specify the -x option, such as:

bcp table_or_view format nul-f format_file_name -xbcp table_or_view format nul-f format_file_name -x

注意

XML フォーマット ファイルであることを区別するには、MyTable.xml のように、ファイル名拡張子として .xml を使用することをお勧めします。To distinguish an XML format file, we recommend that you use .xml as the file name extension, for example, MyTable.xml.

XML フォーマット ファイルの構造およびフィールドについては、「 XML フォーマット ファイル (SQL Server)でサポートされる従来のフォーマットです。For information about the structure and fields of XML format files, see XML Format Files (SQL Server).

使用例Examples

ここでは、 bcp コマンドを使用して XML フォーマット ファイルを作成する方法を示す次の例について説明します。This section contains the following examples that show how to use bcp commands to create an XML format file:

  • A.A. 文字データ用の XML フォーマット ファイルの作成Creating an XML format file for character data
  • B.B. ネイティブ データ用の XML フォーマット ファイルの作成Creating an XML format file for native data

この例では、 HumanResources.Department サンプル データベースの AdventureWorks2012AdventureWorks2012 テーブルを使用しています。The examples use the HumanResources.Department table in the AdventureWorks2012AdventureWorks2012 sample database. HumanResources.Department テーブルには、 DepartmentIDNameGroupName、および ModifiedDateの 4 つの列があります。The HumanResources.Department table contains four columns: DepartmentID, Name, GroupName, and ModifiedDate.

注意

Adventure Works Cycles は、データベースの概念とシナリオを説明するために使用する架空の製造会社です。Adventure Works Cycles is a fictional manufacturing company used to demonstrate database concepts and scenarios.

A.A. 文字データ用の XML フォーマット ファイルの作成Creating an XML format file for character data

次の例では、 Department.xmlテーブルに対して AdventureWorks2012AdventureWorks2012HumanResources.Department という名前の XML フォーマット ファイルを作成します。The following example creates an XML format file, Department.xml, for the AdventureWorks2012AdventureWorks2012HumanResources.Department table. このフォーマット ファイルでは、文字データ形式と、既定と異なるフィールド ターミネータ (,) が使用されます。The format file uses character data formats and a non-default field terminator (,). 生成されたフォーマット ファイルの内容をコマンドの後に示します。The contents of the generated format file are presented after the command.

bcp コマンドには、次の修飾子が含まれます。The bcp command contains the following qualifiers.

修飾子Qualifiers [説明]Description
formatnul-f format_file -xformatnul-f format_file -x XML フォーマット ファイルを指定します。Specifies the XML format file.
-c-c 文字データを指定します。Specifies character data.
-t ,-t , コンマ ( , ) をフィールド ターミネータとして指定します。Specifies a comma (,) as the field terminator.

注: データ ファイルで既定のフィールド ターミネータ (\t) が使用されている場合、 -t スイッチは不要です。Note: If the data file uses the default field terminator (\t), the -t switch is unnecessary.
-T-T bcp ユーティリティが統合セキュリティを使用した信頼関係接続を使用して SQL ServerSQL Server に接続することを指定します。Specifies that the bcp utility connects to SQL ServerSQL Server with a trusted connection using integrated security. -T を指定しない場合、正常にログインするには -U-P を指定する必要があります。If -T is not specified, you must specify -U and -P to successfully log in.

Windows コマンド プロンプトで、次の bcp コマンドを入力します。At the Windows command prompt, enter the following bcp command:

bcp AdventureWorks2012.HumanResources.Department format nul -c -x -f Department-c.xml -t, -T  

生成されるフォーマット ファイル Department-c.xmlには、次の XML 要素が含まれます。The generated format file, Department-c.xml, contains the following XML elements:

<?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 フォーマット ファイル (SQL Server)」を参照してください。For information about the syntax of this format file, see XML Format Files (SQL Server). 文字データについては、「文字形式を使用したデータのインポートまたはエクスポート (SQL Server)」を参照してください。For information about character data, see Use Character Format to Import or Export Data (SQL Server).

B.B. ネイティブ データ用の XML フォーマット ファイルの作成Creating an XML format file for native data

次の例では、 Department-n.xmlテーブルに対して HumanResources.Department という名前の XML フォーマット ファイルを作成します。The following example creates an XML format file, Department-n.xml, for the HumanResources.Department table. このフォーマット ファイルでは、ネイティブ データ型が使用されます。The format file uses native data types. 生成されたフォーマット ファイルの内容をコマンドの後に示します。The contents of the generated format file are presented after the command.

bcp コマンドには、次の修飾子が含まれます。The bcp command contains the following qualifiers.

修飾子Qualifiers [説明]Description
formatnul-f format_file -xformatnul-f format_file -x XML フォーマット ファイルを指定します。Specifies the XML format file.
-n-n ネイティブ データ型を指定します。Specifies native data types.
-T-T bcp ユーティリティが統合セキュリティを使用した信頼関係接続を使用して SQL ServerSQL Server に接続することを指定します。Specifies that the bcp utility connects to SQL ServerSQL Server with a trusted connection using integrated security. -T を指定しない場合、正常にログインするには -U-P を指定する必要があります。If -T is not specified, you must specify -U and -P to successfully log in.

Windows コマンド プロンプトで、次の bcp コマンドを入力します。At the Windows command prompt, enter the following bcp command:

bcp AdventureWorks2012.HumanResources.Department format nul -x -f Department-n.xml -n -T  

生成されるフォーマット ファイル Department-n.xmlには、次の XML 要素が含まれます。The generated format file, Department-n.xml, contains the following XML elements:

<?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 フォーマット ファイル (SQL Server)」を参照してください。For information about the syntax of this format file, see XML Format Files (SQL Server). ネイティブ データの使用方法については、「ネイティブ形式を使用したデータのインポートまたはエクスポート (SQL Server)」を参照してください。For information about how to use native data, see Use Native Format to Import or Export Data (SQL Server).

データ フィールドからテーブル列へのマッピングMapping Data Fields to Table Columns

bcpによって作成されたフォーマット ファイルには、すべてのテーブル列が順番に記述されます。As created by bcp, a format file describes all the table columns in order. テーブル行を再配置または削除する場合は、フォーマット ファイルを変更できます。You can modify a format file to rearrange or omit table rows. その結果、フィールドとテーブル列とが直接マップされないデータ ファイル用に、フォーマット ファイルをカスタマイズできます。This lets you customize a format file to a data file whose fields do not map directly to the table columns. 詳細については、次の各トピックを参照してください。For more information, see the following topics:

参照See Also

bcp ユーティリティ bcp Utility
フォーマット ファイルを使用したテーブル列とデータ ファイル フィールドのマッピング (SQL Server) Use a Format File to Map Table Columns to Data-File Fields (SQL Server)
フォーマット ファイルを使用したテーブル列のスキップ (SQL Server) Use a Format File to Skip a Table Column (SQL Server)
フォーマット ファイルを使用したデータ フィールドのスキップ (SQL Server) Use a Format File to Skip a Data Field (SQL Server)
XML 以外のフォーマット ファイル (SQL Server) Non-XML Format Files (SQL Server)
XML フォーマット ファイル (SQL Server)XML Format Files (SQL Server)