다음을 통해 공유


bcp_colfmt

사용자 파일에 있는 데이터의 원본 또는 대상 형식을 지정합니다. 원본 형식으로 사용되는 경우 bcp_colfmt SQL Server 테이블에 대량 복사의 데이터 원본으로 사용되는 기존 데이터 파일의 형식을 지정합니다. 대상 형식으로 사용될 경우에는 데이터 파일이 bcp_colfmt에 지정된 열 형식을 사용하여 만들어집니다.

Syntax

  
RETCODE bcp_colfmt (  
HDBC   
hdbc  
,  
INT  
idxUserDataCol  
,  
BYTE   
eUserDataType  
,  
INT   
cbIndicator  
,  
DBINT   
cbUserData  
,  
LPCBYTE   
pUserDataTerm  
,  
INT   
cbUserDataTerm  
,  
INT   
idxServerCol  
);  
  

인수

hdbc
대량 복사가 가능한 ODBC 연결 핸들입니다.

idxUserDataCol
형식이 지정되는 사용자 데이터 파일의 서수 열 번호입니다. 첫 번째 열은 1입니다.

eUserDataType
사용자 파일에 있는 이 열의 데이터 형식입니다. 데이터베이스 테이블에 있는 해당 열의 데이터 형식(idxServerColumn)과 다르면 가능한 경우 대량 복사에서 데이터를 변환합니다.

SQL Server 2005에서는 eUserDataType 매개 변수에서 SQLXML 및 SQLUDT 데이터 형식 토큰에 대한 지원을 도입했습니다.

eUserDataType 매개 변수는 ODBC C 데이터 형식 열거자가 아닌 sqlncli.h의 SQL Server 데이터 형식 토큰에 의해 열거됩니다. 예를 들어 SQL Server 특정 형식 SQLCHARACTER를 사용하여 문자열 ODBC 형식 SQL_C_CHAR 지정할 수 있습니다.

SQL Server 데이터 형식의 기본 데이터 표현을 지정하려면 이 매개 변수를 0으로 설정합니다.

eUserDataType이 SQLDECIMAL 또는 SQLNUMERIC인 경우 SQL Server 파일로 대량 복사:

  • 원본 열이 10진 수 또는 숫자가 아닌 경우 기본 전체 자릿수와 소수 자릿수가 사용됩니다.

  • 원본 열이 10진 수 또는 숫자인 경우 원본 열의 전체 자릿수와 소수 자릿수가 사용됩니다.

cbIndicator
열 데이터의 길이 또는 Null 표시기의 길이(바이트)입니다. 올바른 표시기 길이 값은 0(표시기를 사용하지 않을 경우), 1, 2, 4 또는 8입니다.

기본 대량 복사 표시기를 사용하도록 지정하려면 이 매개 변수를 SQL_VARLEN_DATA로 설정합니다.

표시기는 메모리에서는 임의의 데이터 바로 앞에 나타나고 데이터 파일에서는 표시기가 적용되는 데이터 바로 앞에 나타납니다.

표시기와 최대 열 길이를 사용하거나 표시기와 종결자 시퀀스를 사용하는 등 두 가지 이상의 방법을 사용하여 데이터 파일 열 길이를 지정하는 경우 대량 복사에는 복사되는 데이터 크기가 가장 작은 방법이 선택됩니다.

사용자 개입을 통해 데이터 형식이 조정되지 않는 대량 복사로 생성된 데이터 파일에는 열 데이터의 길이가 변경될 수 있거나 열이 NULL 값을 허용할 수 있는 경우 표시기가 포함됩니다.

cbUserData
길이 표시기나 종결자의 길이를 제외한 사용자 파일에 있는 이 열 데이터의 최대 길이(바이트)입니다.

cbUserData 를 SQL_NULL_DATA로 설정하면 데이터 파일 열의 모든 값이 NULL이거나 NULL로 설정해야 함을 나타냅니다.

cbUserData를 SQL_VARLEN_DATA 설정하면 시스템에서 각 열의 데이터 길이를 결정해야 합니다. 일부 열의 경우 이는 길이/null 표시기가 SQL Server 복사본의 데이터 앞에 생성되거나 SQL Server 복사된 데이터에서 표시기가 예상됨을 의미할 수 있습니다.

SQL Server 문자 및 이진 데이터 형식의 경우 cbUserData는 SQL_VARLEN_DATA, SQL_NULL_DATA, 0 또는 일부 양수 값일 수 있습니다. cbUserData 가 SQL_VARLEN_DATA이면 시스템에서 길이 표시기(있는 경우)나 종결자 시퀀스를 사용하여 데이터 길이를 확인합니다. 길이 표시기와 종결자 시퀀스를 모두 지정하는 경우 대량 복사에는 복사되는 데이터 크기가 가장 작은 방법이 사용됩니다. cbUserData가 SQL_VARLEN_DATA 경우 데이터 형식은 SQL Server 문자 또는 이진 형식이며 길이 표시기나 종결자 시퀀스를 지정하지 않으면 시스템에서 오류 메시지를 반환합니다.

cbUserData 가 0이거나 양수 값이면 시스템은 cbUserData 를 최대 데이터 길이로 사용합니다. 그러나 cbUserData가 양수이고 길이 표시자 또는 종결자 시퀀스도 제공되는 경우 시스템은 복사할 데이터가 적은 방법을 사용하여 데이터 길이를 확인합니다.

cbUserData 값은 데이터의 바이트 수를 나타냅니다. 문자 데이터가 유니코드 와이드 문자로 표현되는 경우 양수 cbUserData 매개 변수 값은 문자 수와 각 문자의 바이트 크기를 곱한 값을 나타냅니다.

pUserDataTerm
이 열에 사용할 종결자 시퀀스입니다. 이 매개 변수는 주로 문자 데이터 형식에 유용한데 그 이유는 다른 모든 형식은 길이가 고정되어 있거나 이진 데이터의 경우 현재 바이트 수를 정확하게 기록하기 위해 길이 표시기가 필요하기 때문입니다.

추출한 데이터가 종결되지 않도록 하거나 사용자 파일의 데이터가 종결되지 않았음을 나타내려면 이 매개 변수를 NULL로 설정하십시오.

종결자와 길이 표시기를 사용하거나 종결자와 최대 열 길이를 사용하는 등 두 가지 이상의 방법을 사용하여 사용자 파일 열 길이를 지정하는 경우 대량 복사에는 복사되는 데이터 크기가 가장 작은 방법이 선택됩니다.

대량 복사 API는 필요한 경우 유니코드에서 MBCS로의 문자 변환을 수행합니다. 종결자 바이트 문자열 및 바이트 문자열 길이가 모두 올바르게 설정되도록 주의해야 합니다.

cbUserDataTerm
이 열에 사용할 종결자 시퀀스의 길이(바이트)입니다. 종결자가 없거나 데이터에 필요하지 않은 경우 이 값을 0으로 설정합니다.

idxServerCol
데이터베이스 테이블에서 열의 서수 위치입니다. 첫 번째 열 번호는 1입니다. 열의 서수 위치는 SQLColumns를 사용하여 확인할 수 있습니다.

이 값이 0이면 대량 복사에서 데이터 파일의 열을 무시합니다.

반환

SUCCEED 또는 FAIL

설명

bcp_colfmt 함수를 사용하여 대량 복사에 사용할 사용자 파일 형식을 지정할 수 있습니다. 대량 복사의 경우 형식에는 다음과 같은 부분이 포함됩니다.

  • 사용자 파일 열에서 데이터베이스 열로의 매핑

  • 각 사용자 파일 열의 데이터 형식

  • 각 열에 대한 표시기(옵션)의 길이

  • 사용자 파일 열당 최대 데이터 길이

  • 각 열에 대한 종결 바이트 시퀀스(옵션)

  • 선택 사항인 종결 바이트 시퀀스의 길이

bcp_colfmt 에 대한 각 호출에서는 사용자 파일의 한 열에 대한 서식을 지정합니다. 예를 들어 다섯 개의 열로 구성된 사용자 데이터 파일의 세 열에 대해 기본 설정을 변경하려면 먼저 bcp_columns(5)를 호출한 다음 bcp_colfmt 를 다섯 번 호출합니다. 이 중 세 번의 호출에서 사용자 지정 형식을 설정합니다. 나머지 두 번의 호출에서는 eUserDataType 을 0으로 설정하고 cbIndicator, cbUserDatacbUserDataTerm 을 각각 0, SQL_VARLEN_DATA 및 0으로 설정합니다. 이 프로시저는 다섯 개의 열을 모두 복사하는데 이 중 세 개는 사용자 지정된 형식으로, 두 개는 기본 형식으로 복사합니다.

cbIndicator의 경우 이제 큰 값 형식을 나타내는 값 8이 유효합니다. 해당 열이 새로운 최대 유형인 필드에 접두사가 지정되어 있으면 필드 값을 8로만 설정할 수 있습니다. 자세한 내용은 bcp_bind 참조하세요.

bcp_colfmt 를 호출하기 전에 bcp_columns함수를 호출해야 합니다.

사용자 파일의 각 열에 대해 bcp_colfmt 한 번 호출해야 합니다.

사용자 파일 열에 대해 bcp_colfmt 두 번 이상 호출하면 오류가 발생합니다.

사용자 파일의 모든 데이터를 SQL Server 테이블로 복사할 필요는 없습니다. 열을 건너뛰려면 열의 데이터 형식을 지정하고 idxServerCol 매개 변수를 0으로 설정합니다. 열을 건너뛰려면 열 형식을 지정해야 합니다.

bcp_writefmt 함수는 형식 사양을 유지하는 데 사용할 수 있습니다.

향상된 날짜 및 시간 기능에 대한 bcp_colfmt 지원

날짜/시간 형식에 eUserDataType 매개 변수와 함께 사용되는 형식에 대한 자세한 내용은 향상된 날짜 및 시간 형식에 대한 대량 복사 변경 내용(OLE DB 및 ODBC)을 참조하세요.

자세한 내용은 날짜 및 시간 개선 사항(ODBC)을 참조하세요.

참고 항목

Bulk Copy Functions