bcp を使用したデータ ファイルのプレフィックス長の指定 (SQL Server)Specify prefix length in data files using bcp (SQL Server)

適用対象: ○SQL Server ○Azure SQL Database ○Azure Synapse Analytics (SQL DW) ○Parallel Data Warehouse APPLIES TO: YesSQL Server YesAzure SQL Database YesAzure Synapse Analytics (SQL DW) YesParallel Data Warehouse

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 プロンプトThe bcp Prompt for Prefix Length

対話型の bcp コマンドで、フォーマット ファイル スイッチ ( -f ) またはデータ形式スイッチ ( -n-c-w、または -N) のどちらも付けずに inまたは outオプションを指定すると、次のように各データ フィールドのプレフィックス長を要求するプロンプトが表示されます。If an interactive bcp command contains the in or out option without either the format file switch (-f) or a data-format switch (-n, -c, -w, or -N), the command prompts for the prefix length of each data field, as follows:

Enter prefix length of field <field_name> [<default>]:

0 を指定すると、フィールドの長さ (文字データ型の場合) またはフィールド ターミネータ (文字以外のネイティブ型の場合) のいずれかが、 bcp によって要求されます。If you specify 0, bcp prompts you for either the length of the field (for a character data type) or a field terminator (for a native non-character type).

注意

bcp コマンドですべてのフィールドを対話形式で指定すると、各フィールドへの応答を XML 形式以外のファイルに保存するように要求するプロンプトが表示されます。After you interactively specify all of the fields in a bcp command, the command prompts you save your responses for each field in a non-XML format file. XML 以外のフォーマット ファイルの詳細については、「XML 以外のフォーマット ファイル (SQL Server)」を参照してください。For more information about non-XML format files, see Non-XML Format Files (SQL Server).

プレフィックス長の概要Overview of Prefix Length

フィールドのプレフィックス長を格納するには、フィールドの最大長を表すのに十分なバイト数が必要です。To store the prefix length of a field, you need enough bytes to represent the maximum length of the field. 必要なバイト数は、ファイル ストレージの型、列の NULL 値許容属性、およびデータがネイティブ形式または文字形式でデータ ファイルに格納されるかどうかによって異なります。The number of bytes that are required also depends upon the file storage type, the nullability of a column, and whether the data is being stored in the data file in its native or character format. たとえば、 text データ型または image データ型では、フィールド長を格納するために 4 文字のプレフィックス文字列が必要ですが、 varchar データ型で必要なのは 2 文字です。For example, a text or image data type requires four prefix characters to store the field length, but a varchar data type requires two characters. データ ファイルでは、このようなプレフィックス長文字列は、 SQL ServerSQL Serverの内部バイナリ データ形式で格納されます。In the data file, these length-prefix characters are stored in the internal binary data format of SQL ServerSQL Server.

重要

ネイティブ形式を使用するときは、フィールド ターミネータではなくプレフィックス長を使用します。When you use native format, use length prefixes rather than field terminators. ネイティブ形式のデータ ファイルは SQL ServerSQL Server の内部バイナリ データ形式で格納されるので、ネイティブ形式のデータがターミネータと競合することがあります。Native format data might conflict with terminators because a native-format data file is stored in the SQL ServerSQL Server internal binary data format.

一括エクスポートのプレフィックス長Prefix Lengths for Bulk Export

注意

フィールドをエクスポートするときにプレフィックス長のプロンプトに表示される既定値は、フィールドの最も効率的なプレフィックス長を示します。The default value that is provided at the prefix-length prompt when you export a field indicates the most efficient prefix length for the field.

NULL 値は空のフィールドとして表現されます。Null values are represented as an empty field. フィールドが空 (NULL) であることを示すには、フィールド プレフィックスに値 -1 を含めます。つまり、少なくとも 1 バイトが必要です。To indicate that the field is empty (represents NULL), the field prefix contains the value -1; that is, it requires at least 1 byte. SQL ServerSQL Server テーブル列で NULL 値を許可する場合は、ファイル ストレージの型に応じて、1 以上のプレフィックス長が必要になります。Note that if a SQL ServerSQL Server table column allows null values, the column requires a prefix length of 1 or greater, depending on the file storage type.

データを一括エクスポートし、ネイティブ データ型または文字形式のいずれかで格納する場合は、次の表に示すプレフィックス長を使用します。When you bulk export data and store it in either native data types or character format, use the prefix lengths shown in the following table.

SQL ServerSQL Server

データ型 (data type)data type
ネイティブ形式Native format

NOT NULLNOT NULL
ネイティブ形式Native format

NULLNULL
文字形式Character format

NOT NULLNOT NULL
文字形式Character format

NULLNULL
charchar 22 22 22 22
varcharvarchar 22 22 22 22
ncharnchar 22 22 22 22
nvarcharnvarchar 22 22 22 22
text*text* 44 44 44 44
ntext*ntext* 44 44 44 44
[バイナリ]binary 22 22 22 22
varbinaryvarbinary 22 22 22 22
image*image* 44 44 44 44
datetimedatetime 00 11 00 11
smalldatetimesmalldatetime 00 11 00 11
decimaldecimal 11 11 11 11
numericnumeric 11 11 11 11
floatfloat 00 11 00 11
realreal 00 11 00 11
intint 00 11 00 11
bigintbigint 00 11 00 11
smallintsmallint 00 11 00 11
tinyinttinyint 00 11 00 11
moneymoney 00 11 00 11
smallmoneysmallmoney 00 11 00 11
bitbit 00 11 00 11
uniqueidentifieruniqueidentifier 11 11 00 11
timestamptimestamp 11 11 11 11
varchar(max)varchar(max) 88 88 88 88
varbinary(max)varbinary(max) 88 88 88 88
UDT (ユーザー定義データ型)UDT (a user-defined data type) 88 88 88 88
XMLXML 88 88 88 88
sql_variantsql_variant 88 88 88 88

*ntexttext、および image データ型は、 SQL ServerSQL Serverの将来のバージョンで削除される予定です。*The ntext, text, and image data types will be removed in a future version of SQL ServerSQL Server. 新しい開発作業では、これらのデータ型の使用は避け、現在これらのデータ型を使用しているアプリケーションは修正するようにしてください。Avoid using these data types in new development work, and plan to modify applications that currently use them. 代わりに、 nvarchar(max)varchar(max)varbinary(max) を使用してください。Use nvarchar(max), varchar(max), and varbinary(max) instead.

一括インポートのプレフィックス長Prefix Lengths for Bulk Import

データが一括インポートされるときは、プレフィックス長はデータ ファイルが作成されたときに指定された値になります。When data is bulk imported, the prefix length is the value that was specified when the data file was created originally. bcp コマンドでデータ ファイルが作成されなかった場合、プレフィックス長文字列が存在しない場合があります。If the data file was not created by a bcp command, length prefix characters probably do not exist. この場合は、プレフィックス長に 0 を指定します。In this instance, specify 0 for the prefix length.

注意

bcpを使用して、作成されなかったデータ ファイルのプレフィックス長を指定するには、このトピックの「 一括エクスポートのプレフィックス長」に記載した長さを使用してください。To specify a prefix length in a data file that was not created by using bcp, use the lengths provided in Prefix Lengths for Bulk Export, earlier in this topic.

参照See Also

bcp ユーティリティ bcp Utility
データ型 (Transact-SQL) Data Types (Transact-SQL)
bcp を使用したフィールド長の指定 (SQL Server) Specify Field Length by Using bcp (SQL Server)
フィールド ターミネータと行ターミネータの指定 (SQL Server) Specify Field and Row Terminators (SQL Server)
bcp を使用したファイル ストレージ型の指定 (SQL Server)Specify File Storage Type by Using bcp (SQL Server)