bcp を使用して互換性データ形式を指定する (SQL Server)Specify compatibility data formats when using bcp (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 Serverbcp コマンドのデータ形式属性、フィールド固有のプロンプト、および XML 以外のフォーマット ファイルでのフィールドごとのデータの格納について説明します。This topic describes the data-format attributes, field-specific prompts, and storing field-by-field data in a non-xml format file of the SQL ServerSQL Serverbcp command. このトピックの内容は、 SQL ServerSQL Server データを一括エクポートして別のプログラム (別のデータベース プログラムなど) に一括インポートする場合に有用です。Understanding these can be helpful when you bulk export SQL ServerSQL Server data for bulk import into another program, such as another database program. ソース テーブルの既定のデータ形式 (ネイティブ、文字、または Unicode) が、他のプログラムで想定されているデータ レイアウトと互換性がない場合があります。互換性がない場合はデータをエクスポートするときに、データ レイアウトを記述する必要があります。The default data formats (native, character, or Unicode) in the source table might be incompatible with the data layout expected by the other program If an incompatibility exists, when you export the data, you must describe the data layout.

注意

データをインポートまたはエクスポートするためのデータ形式に精通していない場合は、「 一括インポートまたは一括エクスポートのデータ形式 (SQL Server)」を参照してください。If you are unfamiliar with data formats for importing or exporting data, see Data Formats for Bulk Import or Bulk Export (SQL Server).

bcp データ形式の属性bcp Data-Format Attributes

bcp コマンドにより、次のデータ形式属性に関して、データ ファイル内の各フィールドの構造を指定できます。The bcp command allows you to specify the structure of each field in a data file in terms of the following data-format attributes:

  • ファイル ストレージ型File storage type

    ファイル ストレージ型 は、データ ファイルへのデータの格納方法を記述します。The file storage type describes how data is stored in the data file. データ ファイルには、データベース テーブルの型 (ネイティブ形式)、文字表現 (文字形式)、または暗黙的な型変換がサポートされているデータ型のいずれかでデータをエクスポートできます。暗黙的な型変換では、たとえば、 smallintintとしてコピーされます。ユーザー定義のデータ型は、基本データ型としてエクスポートされます。Data can be exported to a data file as its database table type (native format), in its character representation (character format), or as any data type where implicit conversion is supported; for example, copying a smallint as an int. User-defined data types are exported as their base types. 詳細については、「 bcp を使用したファイル ストレージ型の指定 (SQL Server)」を参照してください。For more information, see Specify File Storage Type by Using bcp (SQL Server).

  • プレフィックス長Prefix length

    bcp コマンドでは、ネイティブ形式のデータをデータ ファイルに一括エクスポートするためのファイル ストレージが最も少なくなるように、各フィールドの前にそのフィールドの長さを 1 文字以上の文字列で指定します。To provide the most compact file storage for the bulk export of data in native format to a data file, the bcp command precedes each field with one or more characters that indicates the length of the field. このような文字列を、 プレフィックス長文字列と呼びます。These characters are called length prefix characters. 詳細については、「 bcp を使用したデータ ファイルのプレフィックス長の指定 (SQL Server)」を参照してください。For more information, see Specify Prefix Length in Data Files by Using bcp (SQL Server).

  • フィールド長Field length

    フィールド長は、文字形式でデータを表現するために必要な文字の最大数を示します。The field length indicates the maximum number of characters that are required to represent data in character format. データがネイティブ形式で格納される場合、フィールド長は既にわかっています。The field length is already known if the data is stored in the native format. 詳細については、「 bcp を使用したフィールド長の指定 (SQL Server)」を参照してください。For more information, see Specify Field Length by Using bcp (SQL Server).

  • フィールド ターミネータField terminator

    文字列データ フィールドでは、省略可能なターミネータ文字を使用して、データ ファイルの各フィールドの末尾 ( フィールド ターミネータを使用) と各行の末尾 ( 行ターミネータを使用) を示すことができます。For character data fields, optional terminating characters allow you to mark the end of each field in a data file (using a field terminator) and the end of each row (using a row terminator). ターミネータ文字は、フィールドや行の終了位置と次のフィールドや行の開始位置を、データ ファイルを読み取るプログラムに示す方法の 1 つです。Terminating characters are one way to indicate to programs reading the data file where one field or row ends and another begins. 詳細については、「 フィールド ターミネータと行ターミネータの指定 (SQL Server)」を参照してください。For more information, see Specify Field and Row Terminators (SQL Server).

フィールド固有のプロンプトの概要Overview of the Field-Specific Prompts

対話的な bcp コマンドに in オプションまたは out オプションが含まれていて、フォーマット ファイル スイッチ ( -f) またはデータ形式スイッチ ( -n-c-w、または -N) のいずれも含まれていない場合は、ソース テーブルとターゲット テーブルの各列で、上記の属性について順番に問い合わせが行われます。If an interactive bcp command contains the in or out option but does not also contain either the format file switch (-f) or a data-format switch (-n, -c, -w, or -N), each column in the source or target table, the command prompts for each of the preceding attributes, in turn. 問い合わせが行われる際は、 bcp コマンドにより、テーブル列の SQL ServerSQL Server データ型に基づいてそれぞれ既定値が表示されます。In each prompt, the bcp command provides a default value based on the SQL ServerSQL Server data type of the table column. すべての問い合わせに対して既定値を受け入れることは、コマンド ラインでネイティブ形式 ( -n) を指定するのと同じ結果になります。Accepting the default value for all of the prompts produces the same result as specifying native format (-n) on the command line. 各プロンプトには、[default] のように既定値が角かっこ付きで表示されます。Each prompt displays a default value in brackets: [default]. 表示される既定値を受け入れるには、Enter キーを押します。Pressing ENTER accepts the displayed default. 既定値以外を指定するには、プロンプトで新しい値を入力します。To specify a value other than the default, enter the new value at the prompt.

Example

次の例では、 bcp コマンドを使用して、 HumanResources.myTeam テーブルから myTeam.txt ファイルに、データを対話的に一括エクスポートします。The following example uses the bcp command to bulk export data from the HumanResources.myTeam table interactively to the myTeam.txt file. このテーブルを作成しないと、例を実行できません。Before you can run the example, you must create this table. テーブルの詳細とテーブルを作成する方法については、「HumanResources.myTeam サンプル テーブル (SQL Server)」を参照してください。For information about the table and how to create it, see HumanResources.myTeam Sample Table (SQL Server).

コマンドでフォーマット ファイルもデータ型も指定しないと、 bcp からデータ形式情報が要求されます。The command specifies neither a format file nor a data type, causing bcp to prompt for data-format information. MicrosoftMicrosoft Windows コマンド プロンプトで、次のように入力します。At the MicrosoftMicrosoft Windows command prompt, enter:

bcp AdventureWorks.HumanResources.myTeam out myTeam.txt -T  

列ごとに、bcp からフィールド固有の値が要求されます。For each column, bcp prompts for field-specific values. 次の例は、テーブルの EmployeeID 列と Name 列のフィールド固有のプロンプトを示しています。また、各列の既定のファイル保存形式 (ネイティブ形式) も示しています。The following example shows the field-specific prompts for the EmployeeID and Name columns of the table, and suggests the default file storage type (the native format) for each column. EmployeeID 列と Name 列のプレフィックス長は、それぞれ 0 と 2 です。The prefix lengths of the EmployeeID and Name column are 0 and 2, respectively. ここでは、各フィールドのターミネータとして、ユーザーがコンマ (,) を指定します。The user specifies a comma (,) as the terminator of each field.

Enter the file storage type of field EmployeeID [smallint]:

Enter prefix-length of field EmployeeID [0]:

Enter field terminator [none]:,

Enter the file storage type of field Name [nvarchar]:

Enter prefix length of field Name [2]:

Enter field terminator [none]:,

.

.

.

テーブルの列ごとに、列の順番に従って、同等のプロンプトが (必要に応じて) 表示されます。Equivalent prompts (as needed) are displayed for each of the table columns in order.

XML 以外のフォーマット ファイルでのフィールドごとのデータの格納Storing Field-by-Field Data in a Non-XML Format File

すべてのテーブル列の情報を指定すると、 bcp コマンドから XML 以外のフォーマット ファイルを生成することを求められます。この生成は省略可能です。このフォーマット ファイルには、プロンプトに応じて指定したフィールドごとの情報が格納されます (上記の例を参照)。After all of the table columns are specified, the bcp command prompts you to optionally generate a non-XML format file that stores the field-by-field information just supplied (see the preceding example). フォーマット ファイルを生成することを選択すると、いつでも、そのテーブルからデータをエクスポートしたり、同じような構造のデータを SQL ServerSQL Serverにインポートできます。If you choose to generate a format file, you can whenever you export data out of that table or import like-structured data into SQL ServerSQL Server.

注意

フォーマット ファイルを使用して、データ ファイルから SQL ServerSQL Server のインスタンスにデータを一括インポートできます。また、形式を再度指定しないで、そのテーブルからデータを一括エクスポートできます。You can use the format file to bulk import data from the data file into an instance of SQL ServerSQL Server or to bulk export data from the table, without needing to respecify the format. 詳細については、「 データのインポートまたはエクスポート用のフォーマット ファイル (SQL Server)」を参照してください。For more information, see Format Files for Importing or Exporting Data (SQL Server).

次の例では、 myFormatFile.fmtという名前の XML 以外のフォーマット ファイルを作成します。The following example creates a non-XML format file named myFormatFile.fmt:

Do you want to save this format information in a file? [Y/n] y

Host filename: [bcp.fmt]myFormatFile.fmt

フォーマット ファイルの既定の名前は bcp.fmt ですが、必要に応じて別のファイル名を指定できます。The default name for the format file is bcp.fmt, but you can specify a different file name if you choose.

注意

文字形式やネイティブ形式など、ファイル保存形式に 1 つのデータ形式を使用するデータ ファイルの場合は、 format オプションを使用することで、データをエクスポートまたはインポートしなくても、フォーマット ファイルをすばやく作成できます。For a data file that uses a single data format for its file-storage type, such as character or native format, you can quickly create a format file without exporting or importing data by using the format option. この方法は簡単で、XML フォーマット ファイルと XML 以外のフォーマット ファイルのどちらも作成できるという利点があります。This approach has the advantages of being easy and of allowing you to create either an XML format file or a non-XML format file. 詳細については、「フォーマット ファイルの作成 (SQL Server)」をご覧ください。For more information, see Create a Format File (SQL Server).

[なし] :None.

参照See Also

データの一括インポートと一括エクスポート (SQL Server) Bulk Import and Export of Data (SQL Server)
一括インポートまたは一括エクスポートのデータ形式 (SQL Server) Data Formats for Bulk Import or Bulk Export (SQL Server)
bcp ユーティリティ bcp Utility
データ型 (Transact-SQL)Data Types (Transact-SQL)