다음을 통해 공유


bcp_setcolfmt

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

bcp_setcolfmt 함수는 bcp_colfmt 대체합니다. 열 데이터 정렬 을 지정할 때 bcp_setcolfmt 함수를 사용해야 합니다. bcp_setbulkmode 사용하여 둘 이상의 열 형식을 지정할 수 있습니다.

이 함수는 대량 복사 작업에서 열 형식을 지정하는 유연한 방법을 제공합니다. 개별 열 형식 특성을 설정하는 데 사용됩니다. bcp_setcolfmt 호출할 때마다 하나의 열 형식 특성이 설정됩니다.

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

구문

  
RETCODE bcp_setcolfmt (  
        HDBC hdbc,  
        INT field,  
        INT property,  
        void* pValue,  
        INT cbValue);  

인수

hdbc
대량 복사 사용 ODBC 연결 핸들입니다.

field
속성을 설정할 서수 열 번호입니다.

속성
속성 상수 중 하나입니다. 속성 상수는 이 표에 정의되어 있습니다.

속성 설명
BCP_FMT_TYPE BYTE 사용자 파일에 있는 이 열의 데이터 형식입니다. 데이터베이스 테이블에 있는 해당 열의 데이터 형식과 다른 경우 대량 복사는 가능하면 데이터를 변환합니다.

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

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

SQL Server에서 파일로 대량 복사하는 경우 BCP_FMT_TYPE SQLDECIMAL 또는 SQLNUMERIC인 경우 원본 열이 소수 또는 숫자가 아닌 경우 기본 전체 자릿수와 소수 자릿수가 사용됩니다. 그렇지 않은 경우 원본 열이 소수 또는 숫자이면 원본 열의 전체 자릿수와 소수 자릿수가 사용됩니다.
BCP_FMT_INDICATOR_LEN INT 표시기의 길이(접두사)입니다.

열 데이터의 길이 또는 null 표시기의 길이(바이트)입니다. 유효한 표시기 길이 값은 0(표시기를 사용하지 않는 경우), 1, 2 또는 4입니다.

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

표시기가 데이터 바로 앞에 메모리에 표시되고 데이터 파일이 적용되는 데이터 바로 앞에 데이터 파일에 표시됩니다.

데이터 파일 열 길이를 지정하는 두 가지 이상의 방법(예: 표시기 및 최대 열 길이 또는 표시기 및 종결자 시퀀스)을 사용하는 경우 대량 복사는 복사되는 데이터의 양이 가장 적은 방법을 선택합니다.

열 데이터의 길이가 달라질 수 있거나 열이 NULL을 값으로 수락할 수 있는 경우 사용자 개입이 데이터 형식을 조정하지 않을 때 대량 복사를 통해 생성된 데이터 파일에는 표시기가 포함됩니다.
BCP_FMT_DATA_LEN DBINT 데이터의 길이(열 길이)입니다.

길이 표시기 또는 종결자의 길이를 포함하지 않고 사용자 파일에 있는 이 열 데이터의 최대 길이(바이트)입니다.

BCP_FMT_DATA_LEN SQL_NULL_DATA 설정하면 데이터 파일 열의 모든 값이 NULL이거나 NULL로 설정되어야 합니다.

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

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

BCP_FMT_DATA_LEN 0 또는 양수 값이면 시스템은 BCP_FMT_DATA_LEN 최대 데이터 길이로 사용합니다. 그러나 양수 BCP_FMT_DATA_LEN 외에도 길이 표시기 또는 종결자 시퀀스가 제공되는 경우 시스템은 복사되는 데이터의 양이 가장 적은 메서드를 사용하여 데이터 길이를 결정합니다.

BCP_FMT_DATA_LEN 값은 데이터 바이트 수를 나타냅니다. 문자 데이터가 유니코드 와이드 문자로 표현되는 경우 양수 BCP_FMT_DATA_LEN 매개 변수 값은 각 문자의 크기(바이트)를 곱한 문자 수를 나타냅니다.
BCP_FMT_TERMINATOR LPCBYTE 이 열에 사용할 종결자 시퀀스(ANSI 또는 유니코드)에 대한 포인터입니다. 이 매개 변수는 다른 모든 형식이 고정 길이이거나 이진 데이터의 경우 존재하는 바이트 수를 정확하게 기록하기 위해 길이 표시기가 필요하기 때문에 문자 데이터 형식에 주로 유용합니다.

추출된 데이터가 종료되지 않도록 하거나 사용자 파일의 데이터가 종료되지 않았음을 나타내려면 이 매개 변수를 NULL로 설정합니다.

사용자 파일 열 길이를 지정하는 방법을 두 개 이상 사용하는 경우(예: 종결자 및 길이 표시기, 종결자 및 최대 열 길이) 대량 복사에서 복사되는 데이터의 양이 가장 적은 방법을 선택합니다.

대량 복사 API는 필요에 따라 유니코드-MBCS 문자 변환을 수행합니다. 종결자 바이트 문자열과 바이트 문자열의 길이가 모두 올바르게 설정되도록 주의해야 합니다.
BCP_FMT_SERVER_COL INT 데이터베이스에서 열의 서수 위치
BCP_FMT_COLLATION LPCSTR 데이터 정렬 이름입니다.

pValue
속성에 연결할 값에 대한 포인터입니다. 이 인수를 사용하여 열 형식 속성을 개별적으로 설정할 수 있습니다.

cbvalue
속성 버퍼의 길이(바이트)입니다.

반품

SUCCEED 또는 FAIL

설명

이 함수는 bcp_colfmt 함수를 대체합니다. bcp_colfmt 모든 기능은 bcp_setcolfmt 함수에 제공됩니다. 또한 열 데이터 정렬에 대한 지원도 제공됩니다. 아래에 지정된 순서대로 다음 열 형식 특성을 설정하는 것이 좋습니다.

BCP_FMT_SERVER_COL

BCP_FMT_DATA_LEN

BCP_FMT_TYPE

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

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

  • 각 사용자 파일 열의 데이터 형식입니다.

  • 각 열에 대한 선택적 표시기의 길이입니다.

  • 사용자 파일 열당 최대 데이터 길이입니다.

  • 각 열에 대한 선택적 종료 바이트 시퀀스입니다.

  • 선택적 종료 바이트 시퀀스의 길이입니다.

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

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

사용자 파일에 있는 각 열의 각 속성에 대해 bcp_setcolfmt 한 번 호출해야 합니다.

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

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

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

날짜/시간 형식의 BCP_FMT_TYPE 속성과 함께 사용되는 형식은 향상된 날짜 및 시간 형식(OLE DB 및 ODBC)에 대한 대량 복사 변경 내용에 지정됩니다.

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

참고 항목

대량 복사 함수