bcp を使用したフィールド長の指定 (SQL Server)Specify Field Length by 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

フィールド長は、文字形式でデータを表現するために必要な文字の最大数を示します。The field length indicates the maximum number of characters that are required to represent data in character format. データがネイティブ形式で格納されている場合、フィールド長は既にわかっています。たとえば、 int データ型では 4 バイトになります。The field length is already known if the data is stored in the native format; for example, the int data type takes 4 bytes. プレフィックス長に 0 を指定した場合、 bcp コマンドを実行すると、フィールド長、既定のフィールド長、 char データを含むデータ ファイル内のデータ ストレージに対するフィールド長の影響を確認するプロンプトが表示されます。If you have indicated 0 for the prefix length, the bcp command prompts you for field length, the default field lengths, and the impact of field-length on data storage in data files that contain char data.

フィールド長を要求する bcp プロンプトThe bcp Prompt for Field 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 field length of each data field, as follows:

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

コンテキスト内でこのプロンプトが表示される例については、「bcp を使用した互換性のためのデータ形式の指定 (SQL Server)」を参照してください。For an example that shows this prompt in context, see Specify Data Formats for Compatibility when Using bcp (SQL Server).

注意

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 on non-XML format files, see Non-XML Format Files (SQL Server).

bcp コマンドでフィールド長を要求するプロンプトが表示されるかどうかは、次のさまざまな要素によって決まります。Whether a bcp command prompts for field length depends on several factors, as follows:

  • 固定長でないデータ型のコピー時にプレフィックス長を 0 に指定した場合、 bcp によってフィールド長を要求するプロンプトが表示されます。When you copy data types that are not of fixed length and you specify a prefix length of 0, bcp prompts for a field length.

  • 非文字データを文字データに変換するとき、 bcp によってデータの保存に十分な長さの既定フィールド長が提示されます。When converting noncharacter data to character data, bcp suggests a default field length large enough to store the data.

  • ファイル保存形式が非文字である場合、 bcp コマンドによってフィールド長を要求するプロンプトは表示されません。If the file storage type is noncharacter, the bcp command does not prompt for a field length. データは、MicrosoftMicrosoft SQL ServerSQL Server のネイティブ データ表現 (ネイティブ形式) で格納されます。The data is stored in the MicrosoftMicrosoft SQL ServerSQL Server native data representation (native format).

既定のフィールド長の使用Using Default Field Lengths

通常、 MicrosoftMicrosoft では、 bcpによって提示された既定値をフィールド長に使用することをお勧めします。Generally, MicrosoftMicrosoft recommends that you accept the bcp-suggested default values for the field length. キャラクター モードのデータ ファイルが作成された場合、既定のフィールド長を使用することによって、データの切り捨てや数値オーバーフロー エラーの発生を防止できます。When a character mode data file is created, using the default field length ensures that data is not truncated and that numeric overflow errors do not occur.

不適切なフィールド長を指定すると、問題が発生する場合があります。If you specify a field length that is incorrect, problems can occur. たとえば、数値データをコピーするときに、そのデータに対して短すぎるフィールド長を指定すると、 bcp ユーティリティによってオーバーフロー エラー メッセージが出力され、データはコピーされません。For instance, if you copy numeric data and you specify a field length that is too short for the data, the bcp utility prints an overflow message and does not copy the data. また、 datetime データをエクスポートするときに、その文字列に対して 26 バイトよりも短いフィールド長を指定すると、 bcp ユーティリティによってデータが切り捨てられ、エラー メッセージも表示されません。Also, if you export datetime data and specify a field length of less than 26 bytes for the character string, the bcp utility truncates the data without an error message.

重要

既定のサイズ オプションを使用すると、 SQL ServerSQL Server は文字列全体を読み取ります。When the default size option is used, SQL ServerSQL Server expects to read an entire string. 場合によっては、既定のフィールド長を使用すると、"予期しないファイルの終了" エラーが発生することもあります。In some situations, use of a default field length can lead to an "unexpected end of file" error. 通常、このエラーは、予期されるフィールドの一部のみがデータ ファイル内にある場合に money データ型および datetime データ型で発生します。たとえば、 mm dd yy/形式の/datetime 値が時刻要素なしで指定された場合、 char 形式の datetime 値の長さは、予期される 24 文字よりも短くなります。Typically, this error occurs with the money and datetime data types when only part of the expected field occurs in the data file; for example, when a datetime value of mm/dd/yy is specified without the time component and is, therefore, shorter than the expected 24 character length of a datetime value in char format. この種類のエラーを防止するには、フィールド ターミネータまたは固定長データ フィールドを使用するか、既定のフィールド長を別の値に変更します。To avoid this type of error, use field terminators or fixed-length data fields, or change the default field length by specifying another value.

文字ファイル保存の既定のフィールド長Default Field Lengths for Character File Storage

次の表は、文字ファイル保存形式として保存されるデータの既定のフィールド長を示しています。The following table lists the default field lengths for data to be stored as a character-file storage type. NULL 値を使用できるデータの長さは、NULL 値を使用できないデータの長さと同じです。Nullable data is the same length as nonnull data.

データ型Data type 既定の長さ (文字数)Default length (characters)
charchar 列に対して定義された長さLength defined for the column
varcharvarchar 列に対して定義された長さLength defined for the column
ncharnchar 列に対して定義された長さの 2 倍Twice the length defined for the column
nvarcharnvarchar 列に対して定義された長さの 2 倍Twice the length defined for the column
[テキスト]Text 00
ntextntext 00
bitbit 11
[バイナリ]binary 列に対して定義された長さの 2 倍 + 1Twice the length defined for the column + 1
varbinaryvarbinary 列に対して定義された長さの 2 倍 + 1Twice the length defined for the column + 1
imageimage 00
datetimedatetime 2424
smalldatetimesmalldatetime 2424
floatfloat 3030
realreal 3030
intint 1212
bigintbigint 1919
smallintsmallint 77
tinyinttinyint 55
moneymoney 3030
smallmoneysmallmoney 3030
decimaldecimal 41*41*
numericnumeric 41*41*
uniqueidentifieruniqueidentifier 3737
timestamptimestamp 1717
varchar(max)varchar(max) 00
varbinary(max)varbinary(max) 00
nvarchar(max)nvarchar(max) 00
UDTUDT ユーザー定義型 (UDT) 列の長さLength of the user-defined term (UDT) column
XMLXML 00

*decimal データ型と numeric データ型について詳しくは、「decimal 型と numeric 型 (Transact-SQL)」をご覧ください。*For more information about the decimal and numeric data types, see decimal and numeric (Transact-SQL).

注意

tinyint 型の列には、0 ~ 255 の値を入力できます。この範囲の任意の数を表現するために必要な最大文字数は 3 です。これは、100 ~ 255 の値に相当します。A column of type tinyint can have values from 0 through 255; the maximum number of characters that are needed to represent any number in that range is three (representing values 100 through 255).

ネイティブ ファイル保存の既定のフィールド長Default Field Lengths for Native File Storage

次の表は、ネイティブ ファイル保存形式として保存されるデータの既定のフィールド長を示しています。The following table lists the default field lengths for data to be stored as native file storage type. NULL 値を使用できるデータの長さは、NULL 値を使用できないデータの長さと同じです。また、文字データは常に文字形式で保存されます。Nullable data is the same length as nonnull data, and character data is always stored in character format.

データ型Data type 既定の長さ (文字数)Default length (characters)
bitbit 11
[バイナリ]binary 列に対して定義された長さLength defined for the column
varbinaryvarbinary 列に対して定義された長さLength defined for the column
imageimage 00
datetimedatetime 88
smalldatetimesmalldatetime 44
floatfloat 88
realreal 44
intint 44
bigintbigint 88
smallintsmallint 22
tinyinttinyint 11
moneymoney 88
smallmoneysmallmoney 44
decimaldecimal *
numericnumeric *
uniqueidentifieruniqueidentifier 1616
timestamptimestamp 88

*decimal データ型と numeric データ型について詳しくは、「decimal 型と numeric 型 (Transact-SQL)」をご覧ください。*For more information about the decimal and numeric data types, see decimal and numeric (Transact-SQL).

前述のすべての場合に、後で SQL ServerSQL Server に再読み込みするためにデータ ファイルを作成して、保存領域を最小限に抑えるには、既定のファイル保存形式と既定のフィールド長と共に、フィールド長プレフィックスを使用します。In all of the preceding cases, to create a data file for later reloading into SQL ServerSQL Server that keeps the storage space to a minimum, use a length prefix with the default file storage type and the default field length.

参照See Also

bcp ユーティリティ bcp Utility
データ型 (Transact-SQL) Data Types (Transact-SQL)
フィールド ターミネータと行ターミネータの指定 (SQL Server) Specify Field and Row Terminators (SQL Server)
bcp を使用したデータ ファイルのプレフィックス長の指定 (SQL Server) Specify Prefix Length in Data Files by Using bcp (SQL Server)
bcp を使用したファイル ストレージ型の指定 (SQL Server) Specify File Storage Type by Using bcp (SQL Server)
一括インポート中の NULL の保持または既定値の使用 (SQL Server)Keep Nulls or Use Default Values During Bulk Import (SQL Server)