bcp를 사용하여 필드 길이 지정(SQL Server)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)

필드 길이는 데이터를 문자 형식으로 나타내는 데 필요한 최대 문자 수를 나타냅니다. 데이터가 네이티브 형식으로 저장된 경우에는 필드 길이를 쉽게 알 수 있습니다. 예를 들어 int 데이터 형식의 길이는 4바이트입니다. 접두사 길이를 0으로 표시한 경우 bcp 명령은 필드 길이, 기본 필드 길이 그리고 char 데이터가 포함된 데이터 파일의 데이터 스토리지에 필드 길이가 미치는 영향을 묻는 메시지를 표시합니다.

필드 길이에 대한 bcp 프롬프트

대화형 bcp 명령에 in 또는 out 옵션이 포함된 경우 서식 파일 스위치(-f) 또는 데이터 형식 스위치(-n, -c, -w 또는 -N)가 없으면 명령에서 다음과 같이 각 데이터 필드의 필드 길이를 지정하라는 메시지가 표시됩니다.

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

컨텍스트에서 이 메시지가 표시되는 예제를 보려면 bcp를 사용하여 데이터 형식을 호환 가능하도록 지정(SQL Server)을 참조하세요.

참고 항목

bcp 명령의 모든 필드를 대화형으로 지정한 후 명령에서 각 필드에 대한 응답을 비 XML 서식 파일로 저장하라는 메시지를 표시합니다. 비 XML 서식 파일에 대한 자세한 내용은 비 XML 서식 파일(SQL Server)을 참조하세요.

bcp 명령에서 필드 길이를 묻는 메시지의 표시 여부는 다음과 같은 몇 가지 요인에 따라 달라집니다.

  • 고정 길이가 아닌 데이터 형식을 복사하고 접두사 길이를 0으로 지정하면 bcp에서 필드 길이를 묻는 메시지가 표시됩니다.

  • 문자가 아닌 데이터를 문자 데이터로 변환할 때 bcp는 데이터를 저장하기에 충분한 기본 필드 길이를 제안합니다.

  • 파일 스토리지 유형이 문자 형식이 아니면 bcp 명령은 필드 길이 입력 메시지를 표시하지 않습니다. 데이터는 Microsoft SQL Server 원시 데이터 표현(원시 형식)으로 저장됩니다.

기본 필드 길이 사용

일반적으로는 Microsoft의 권장 사항에 따라 bcp에서 제시하는 필드 길이의 기본값을 사용하는 것이 좋습니다. 문자 모드 데이터 파일을 만들 때 기본 필드 길이를 사용하면 데이터가 잘리지 않고 숫자 오버플로 오류가 발생하지 않습니다.

잘못된 필드 길이를 지정하면 문제가 발생할 수 있습니다. 예를 들어 숫자 데이터를 복사할 때 이 데이터의 필드 길이가 너무 짧으면 bcp 유틸리티는 오버플로 메시지를 표시하며 데이터를 복사하지 않습니다. 또한 날짜/시간 데이터를 내보내고 문자열에 대해 26바이트 미만의 필드 길이를 지정하는 경우 bcp 유틸리티는 오류 메시지 없이 데이터를 자릅니다.

Important

기본 크기 옵션을 사용하는 경우 SQL Server는 전체 문자열을 읽어야 합니다. 경우에 따라 기본 필드 길이를 사용하면 "예기치 않은 파일 끝" 오류가 발생할 수 있습니다. 일반적으로 이 오류는 데이터 파일에서 예상 필드의 일부만 발생할 때 money날짜/시간 데이터 형식에서 발생합니다. 예를 들어 mm/dd/yy날짜/시간 값이 시간 구성 요소 없이 지정된 경우 char 형식으로 된 날짜/시간 값의 예상 길이인 24자보다 짧습니다. 이러한 유형의 오류를 방지하려면 필드 종결자 또는 고정 길이 데이터 필드를 사용하거나 다른 값을 지정하여 기본 필드 길이를 변경합니다.

문자 파일 스토리지의 기본 필드 길이

다음 표에서는 문자 파일 스토리지 유형으로 저장할 데이터의 기본 필드 길이를 나열합니다. Null 허용 데이터는 null이 아닌 데이터와 길이가 같습니다.

데이터 형식 기본 길이(문자)
char 열에 정의된 길이
varchar 열에 정의된 길이
nchar 열에 정의된 길이의 2배
nvarchar 열에 정의된 길이의 2배
Text 0
ntext 0
bit 1
binary 열에 정의된 길이의 2배 + 1
varbinary 열에 정의된 길이의 2배 + 1
image 0
날짜/시간 24
smalldatetime 24
float 30
real 30
int 12
bigint 19
smallint 7
tinyint 5
money 30
smallmoney 30
decimal 41*
numeric 41*
uniqueidentifier 37
timestamp 17
varchar(max) 0
varbinary(max) 0
nvarchar(max) 0
UDT UDT(사용자 정의 용어) 열의 길이
XML 0

*decimalnumeric 데이터 형식에 대한 자세한 내용은 decimal 및 numeric(Transact-SQL)을 참조하세요.

참고 항목

tinyint 형식의 열은 0부터 255까지의 값을 가질 수 있으며, 해당 범위의 수를 표시하는 데 필요한 최대 문자 수는 3개입니다(100부터 255까지를 표현).

원시 파일 스토리지의 기본 필드 길이

다음 표에서는 원시 파일 스토리지 형식으로 저장할 데이터의 기본 필드 길이를 나열합니다. Null 허용 데이터는 null이 아닌 데이터와 길이가 같으며 문자 데이터는 항상 문자 형식으로 저장됩니다.

데이터 형식 기본 길이(문자)
bit 1
binary 열에 정의된 길이
varbinary 열에 정의된 길이
image 0
datetime 8
smalldatetime 4
float 8
real 4
int 4
bigint 8
smallint 2
tinyint 1
money 8
smallmoney 4
decimal *
numeric *
uniqueidentifier 16
timestamp 8

*decimalnumeric 데이터 형식에 대한 자세한 내용은 decimal 및 numeric(Transact-SQL)을 참조하세요.

이전의 모든 경우에서 스토리지 공간을 최소한으로 유지하는 SQL Server로 나중에 다시 로드하기 위한 데이터 파일을 만들려면 기본 파일 스토리지 형식과 기본 필드 길이와 함께 길이 접두사를 사용합니다.

참고 항목

bcp 유틸리티
데이터 형식(Transact-SQL)
필드 및 행 종결자 지정(SQL Server)
bcp를 사용하여 데이터 파일에 접두사 길이 지정(SQL Server)
bcp를 사용하여 파일 스토리지 유형 지정(SQL Server)
대량 가져오기 수행 중 Null 유지 또는 기본값 사용(SQL Server)