bcp를 사용하여 필드 길이 지정(SQL Server)Specify Field Length by Using bcp (SQL Server)

필드 길이는 데이터를 문자 형식으로 표시하는 데 필요한 최대 문자 수를 나타냅니다.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 명령에 in 또는 out 옵션이 포함된 경우 서식 파일 스위치(-f) 또는 데이터 형식 스위치(-n, -c, -w 또는 -N)가 없으면 다음과 같이 각 데이터 필드의 필드 길이를 지정하라는 메시지가 표시됩니다.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. 대개 이 오류는 예상된 필드의 일부만 데이터 파일에 있는 경우 moneydatetime 데이터 형식에 발생합니다. 예를 들어 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
binarybinary 열에 정의된 길이의 2배에 1을 더한 값Twice the length defined for the column + 1
varbinaryvarbinary 열에 정의된 길이의 2배에 1을 더한 값Twice 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 4141
numericnumeric 4141
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

*decimalnumeric 데이터 형식에 대한 자세한 내용은 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
binarybinary 열에 정의된 길이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

*decimalnumeric 데이터 형식에 대한 자세한 내용은 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)