データのインポートまたはエクスポート用のフォーマット ファイル (SQL Server)Format Files for Importing or Exporting Data (SQL Server)

適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

SQL ServerSQL Server テーブルにデータを一括インポートしたり、テーブルからデータを一括エクスポートしたりする場合、 フォーマット ファイル を使用して、データの一括エクスポートと一括インポートに必要なすべてのフォーマット情報を格納できます。When you bulk import data into a SQL ServerSQL Server table or bulk export data from a table, you can use a format file to store all the format information that is required to bulk export or bulk import data. これには、そのテーブルに対応するデータ ファイル内の各フィールドのフォーマット情報が含まれます。This includes format information for each field in a data file relative to that table.

SQL Server 2017SQL Server 2017 では、次の 2 種類のフォーマット ファイルがサポートされます: XML の形式と XML 以外のフォーマット ファイル。supports two types of format files: XML formats and non-XML format files. XML 以外のフォーマット ファイルにも XML フォーマット ファイルにもデータ ファイル内のすべてのフィールドの説明が含まれており、XML フォーマット ファイルには対応するテーブル列の説明も含まれています。Both non-XML format files and XML format files contain descriptions of every field in a data file, and XML format files also contain descriptions of the corresponding table columns. 通常は、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. 詳細については、「 XML フォーマット ファイル (SQL Server)です。For more information, see XML Format Files (SQL Server).

フォーマット ファイルの利点Benefits of Format Files

  • 他のデータ形式に準拠したり、他のソフトウェアからデータ ファイルを読み取るための編集をほとんど (あるいはまったく) 行うことなく、データ ファイルを出力できる柔軟なシステムが実現します。Provides 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.

  • 不要なデータを追加または削除したり、データ ファイル内の既存のデータを並べ替えたりしなくても、データを一括インポートできます。Enables you to bulk import data without having to add or delete unnecessary data or to reorder existing data in the data file. フォーマット ファイルは、データ ファイルのフィールドとテーブルの列間に不一致がある場合に特に役立ちます。Format files are particularly useful when a mismatch exists between fields in the data file and columns in the table.

フォーマット ファイルの例Examples of Format Files

次の例では、XML 以外のフォーマット ファイルと XML フォーマット ファイルのレイアウトを示します。The following examples show the layout of a non-XML format file and of an XML format file. これらのフォーマット ファイルは、 HumanResources.myTeam サンプル データベースの AdventureWorks2012AdventureWorks2012 テーブルに対応しています。These format files correspond to the HumanResources.myTeam table in the AdventureWorks2012AdventureWorks2012 sample database. このテーブルには、EmployeeIDNameTitle、および ModifiedDate という 4 つの列があります。This table contains four columns: EmployeeID, Name, Title, and ModifiedDate.

注意

このテーブルの詳細とテーブルを作成する方法については、「HumanResources.myTeam サンプル テーブル (SQL Server)」を参照してください。For information about this table and how to create it, see HumanResources.myTeam Sample Table (SQL Server).

A.A. XML 以外のフォーマット ファイルの使用Using a non-XML format file

次に示す XML 以外のフォーマット ファイルでは、 SQL ServerSQL Server テーブルに HumanResources.myTeam ネイティブ データ形式を使用します。The following non-XML format file uses the SQL ServerSQL Server native data format for the HumanResources.myTeam table. このフォーマット ファイルは、次の bcp コマンドを使用して作成されました。This format file was created by using the following bcp command.

bcp AdventureWorks.HumanResources.myTeam format nul -f myTeam.Fmt -n -T   
The contents of this format file are as follows: 9.0  
4  
1       SQLSMALLINT   0       2       ""   1     EmployeeID               ""  
2       SQLNCHAR      2       100     ""   2     Name                     SQL_Latin1_General_CP1_CI_AS  
3       SQLNCHAR      2       100     ""   3     Title                    SQL_Latin1_General_CP1_CI_AS  
4       SQLNCHAR      2       100     ""   4     Background               SQL_Latin1_General_CP1_CI_AS  

詳細については、「 XML 以外のフォーマット ファイル (SQL Server)」をご覧ください。For more information, see Non-XML Format Files (SQL Server).

B.B. XML フォーマット ファイルの使用Using an XML format file

次に示す XML フォーマット ファイルでは、 SQL ServerSQL Server テーブルに HumanResources.myTeam ネイティブ データ形式を使用します。The following XML format file uses the SQL ServerSQL Server native data format for the HumanResources.myTeam table. このフォーマット ファイルは、次の bcp コマンドを使用して作成されました。This format file was created by using the following bcp command.

bcp AdventureWorks.HumanResources.myTeam format nul -f myTeam.Xml -x -n -T   

このフォーマット ファイルの内容を次に示します。The format file contains:

 <?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="NativePrefix" LENGTH="1"/>  
  <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="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
 </RECORD>  
 <ROW>  
  <COLUMN SOURCE="1" NAME="EmployeeID" xsi:type="SQLSMALLINT"/>  
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>  
  <COLUMN SOURCE="3" NAME="Title" xsi:type="SQLNVARCHAR"/>  
  <COLUMN SOURCE="4" NAME="Background" xsi:type="SQLNVARCHAR"/>  
 </ROW>  
</BCPFORMAT>  

詳細については、「 XML フォーマット ファイル (SQL Server)」をご覧ください。For more information, see XML Format Files (SQL Server).

フォーマット ファイルが必要になるケースWhen Is a Format File Required?

INSERT ...SELECT * FROM OPENROWSET(BULK...) ステートメントでは、常にフォーマット ファイルが必要です。An INSERT ... SELECT * FROM OPENROWSET(BULK...) statement always requires a format file.

  • bcp または BULK INSERT の場合、単純な状況では、フォーマット ファイルを使用しなくてもかまいません。必要になることはほとんどありません。For bcp or BULK INSERT, in simple situations, using a format file is optional and rarely necessary. ただし、複雑な一括インポート操作を実行する場合は、頻繁にフォーマット ファイルが必要になります。However, for complex bulk-import situations, a format file is frequently required.

次の場合は、フォーマット ファイルが必要です。Format files are required if:

  • 1 つのデータ ファイルが、スキーマが異なる複数のテーブルのソースとして使用される場合。The same data file is used as a source for multiple tables that have different schemas.

  • データ ファイルのフィールド数と対象のテーブルの列数が異なる場合。次に例を示します。The data file has a different number of fields that the target table has columns; for example:

    • 対象のテーブルに、既定値が定義されているか、NULL 値が許可されている列が 1 つ以上含まれている。The target table contains at least one column for which either a default value is defined or NULL is allowed.

    • ユーザーがテーブルの 1 つ以上の列に対する SELECT/INSERT 権限を持っていない。The users do not have SELECT/INSERT permissions on one or more columns in the table.

    • スキーマが異なる複数のテーブルで、1 つのデータ ファイルが使用されている。A single data file is used with two or more tables that have different schemas.

  • 列の順序がデータ ファイルとテーブルとの間で異なる場合。The column order is different for the data file and table.

  • 終了文字またはプレフィックス長がデータ ファイルの列によって異なる場合。The terminating characters or prefix lengths differ among the columns of the data file.

注意

フォーマット ファイルが存在しない場合に、 bcp コマンドで data-format スイッチ ( -n-c-w、または -N) を指定するか、BULK INSERT 操作で DATAFILETYPE オプションを指定すると、指定したデータ形式がデータ ファイルのフィールドを解釈するための既定の方法として使用されます。In the absence of a format file, if a bcp command specifies a data-format switch (-n, -c, -w, or -N) or a BULK INSERT operation specifies the DATAFILETYPE option, the specified data format is used as the default method of interpreting the fields of the data file.

関連タスクRelated Tasks

参照See Also

XML 以外のフォーマット ファイル (SQL Server) Non-XML Format Files (SQL Server)
XML フォーマット ファイル (SQL Server) XML Format Files (SQL Server)
一括インポートまたは一括エクスポートのデータ形式 (SQL Server)Data Formats for Bulk Import or Bulk Export (SQL Server)