다음을 통해 공유


bcp_control

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

파일과 SQL Server 간의 대량 복사에 대한 다양한 컨트롤 매개 변수의 기본 설정을 변경합니다.

구문

  
RETCODE bcp_control (  
        HDBC hdbc,  
        INT eOption,  
        void* iValue);  

인수

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

eOption
다음 중 하나입니다.

BCPABORT
이미 진행 중인 대량 복사 작업을 중지합니다. 다른 스레드에서 BCPABORT의 eOption사용하여 bcp_control 호출하여 실행 중인 대량 복사 작업을 중지합니다. iValue 매개 변수는 무시됩니다.

BCPBATCH
일괄 처리당 행 수입니다. 기본값은 0으로, 데이터가 추출될 때 테이블의 모든 행 또는 데이터가 SQL Server에 복사될 때 사용자 데이터 파일의 모든 행을 나타냅니다. 1보다 작은 값은 BCPBATCH를 기본값으로 다시 설정합니다.

BCPDELAYREADFMT
부울을 true 로 설정하면 실행 시 bcp_readfmt 읽습니다. false(기본값)이면 bcp_readfmt 즉시 서식 파일을 읽습니다. BCPDELAYREADFMT가 true이고 bcp_columns 또는 bcp_setcolfmt 호출하면 시퀀스 오류가 발생합니다.

BCPDELAYREADFMT, (void *)FALSE) 및 bcp_writefmt 호출 bcp_control(hdbc, 한 후 BCPDELAYREADFMT, (void *)TRUE)를 호출 bcp_control(hdbc, 하는 경우에도 시퀀스 오류가 발생합니다.

자세한 내용은 메타데이터 검색을 참조하세요.

BCPFILECP
iValue 에는 데이터 파일의 코드 페이지 수가 포함됩니다. 1252나 850과 같은 코드 페이지 번호를 지정하거나 다음 값 중 하나를 지정할 수 있습니다.

BCPFILE_ACP: 파일의 데이터는 클라이언트의 Microsoft Windows 코드 페이지에 있습니다.

BCPFILE_OEMCP: 파일의 데이터는 클라이언트의 OEM 코드 페이지(기본값)에 있습니다.

BCPFILE_RAW: 파일의 데이터는 SQL Server의 코드 페이지에 있습니다.

BCPFILEFMT
데이터 파일 형식의 버전 번호입니다. 80(SQL Server 2000(8.x)), 90(SQL Server 2005(9.x)), 100(SQL Server 2008(10.0.x) 또는 SQL일 수 있습니다. Server 2008 R2(10.50.x)), 110(SQL Server 2012(11.x) 또는 120(SQL Server 2014(12.x)) 120이 기본값입니다. 이 옵션은 이전 버전 서버에서 지원하는 형식으로 데이터를 가져오고 내보내는 데 유용합니다. 예를 들어 SQL Server 2000(8.x) 서버의 텍스트 열에서 가져온 데이터를 SQL Server 2005(9.x) 이상 서버의 varchar(max) 열로 가져오려면 80을 지정해야 합니다. 마찬가지로 varchar(max) 열에서 데이터를 내보낼 때 80을 지정하면 텍스트 열이 SQL Server 2000(8.x) 형식으로 저장되고 SQL Server 2000(8.x) 서버의 텍스트 열로 가져올 수 있는 것처럼 저장됩니다.

BCPFIRST
복사할 파일 또는 테이블에 대한 데이터의 첫 번째 행입니다. 기본값은 1입니다. 1보다 작은 값을 지정하면 이 옵션은 기본값으로 다시 설정됩니다.

BCPFIRSTEX
BCP out 작업의 경우 데이터 파일에 복사할 데이터베이스 테이블의 첫 번째 행을 지정합니다.

BCP in 작업의 경우 데이터베이스 테이블에 복사할 데이터 파일의 첫 번째 행을 지정합니다.

iValue 매개 변수는 값을 포함하는 서명된 64비트 정수의 주소여야 합니다. BCPFIRSTEX에 전달할 수 있는 최대값은 2^63-1입니다.

BCPFMTXML
생성된 서식 파일을 XML 형식으로 지정합니다. 기본적으로 꺼져 있습니다.

XML 서식 파일은 유연성이 향상되지만 일부 추가된 제약 조건을 제공합니다. 예를 들어 이전 형식 파일에서 가능했던 필드의 접두사 및 종결자를 동시에 지정할 수 없습니다.

참고 항목

XML 형식 파일은 SQL Server Native Client와 함께 SQL Server를 설치할 때만 지원됩니다.

BCPHINTS
iValue 에는 SQLTCHAR 문자열 포인터가 포함되어 있습니다. 주소가 지정된 문자열에서는 SQL Server 대량 복사 처리 힌트나 결과 집합을 반환하는 Transact-SQL 문을 지정합니다. Transact-SQL 문이 둘 이상의 결과 집합을 반환하도록 지정된 경우 첫 번째 결과 집합 다음에 오는 결과 집합은 모두 무시됩니다. 대량 복사 처리 힌트에 대한 자세한 내용은 bcp 유틸리티를 참조하세요.

BCPKEEPIDENTITY
iValue가 TRUE이면 대량 복사 함수가 ID 제약 조건으로 정의된 SQL Server 열에 제공된 데이터 값을 삽입할 것을 지정합니다. 입력 파일은 ID 열에 해당하는 값을 제공해야 합니다. 설정되지 않은 경우 삽입된 행에 대해 새 ID 값이 생성됩니다. 파일에서 ID 열에 대한 데이터는 모두 무시됩니다.

BCPKEEPNULLS
파일의 빈 데이터 값을 SQL Server 테이블에서 NULL 값으로 변환할지 여부를 지정합니다. iValue가 TRUE이면 SQL Server 테이블에서 빈 값이 NULL로 변환됩니다. 기본적으로 빈 값은 SQL Server 테이블에서 열의 기본값(있는 경우)으로 변환됩니다.

BCPLAST
복사할 마지막 행입니다. 기본값은 모든 행을 복사하는 것입니다. 값이 1보다 작을 경우 이 옵션이 기본값으로 다시 설정됩니다.

BCPLASTEX
BCP out 작업의 경우 데이터 파일에 복사할 데이터베이스 테이블의 마지막 행을 지정합니다.

BCP in 작업의 경우 데이터베이스 테이블에 복사할 데이터 파일의 마지막 행을 지정합니다.

iValue 매개 변수는 값을 포함하는 서명된 64비트 정수의 주소여야 합니다. BCPLASTEX에 전달할 수 있는 최대값은 2^63-1입니다.

BCPMAXERRS
대량 복사 작업이 실패하기 전에 허용되는 오류 수입니다. 기본값은 10입니다. 값이 1보다 작을 경우 이 옵션이 기본값으로 다시 설정됩니다. 대량 복사에는 최대 65,535개의 오류가 허용됩니다. 이 옵션을 65,535보다 큰 값으로 설정하려고 하는 경우 이 옵션은 65,535로 설정됩니다.

BCPODBC
TRUE이면 문자 형식으로 저장된 datetimesmalldatetime 값이 ODBC 타임스탬프 이스케이프 시퀀스 접두사 및 접미사를 사용하도록 지정합니다. BCPODBC 옵션은 DB_OUT만 적용됩니다.

FALSE이 면 1997년 1월 1일을 나타내는 datetime 값이 문자열 1997-01-01 00:00:00.000으로 변환됩니다. TRUE이면 동일한 datetime 값이 {ts '1997-01-01 00:00:00.000'}으로 표시됩니다.

BCPROWCOUNT
현재(또는 마지막) BCP 작업에 의해 영향을 받는 행의 수를 반환합니다.

BCPTEXTFILE
TRUE이면 데이터 파일이 이진 파일이 아닌 텍스트 파일임을 지정합니다. 파일이 텍스트 파일인 경우 BCP는 데이터 파일의 처음 두 바이트에서 유니코드 바이트 마커를 확인하여 유니코드인지 여부를 결정합니다.

BCPUNICODEFILE
TRUE이면 입력 파일이 유니코드 파일임을 지정합니다.

iValue
지정된 eOption의 값입니다. iValue 는 나중에 64비트 값으로 확장할 수 있도록 void 포인터로 캐스팅되는 정수(LONGLONG) 값입니다.

반품

SUCCEED 또는 FAIL

설명

이 함수는 대량 복사를 취소하기 전에 허용되는 오류 수, 데이터 파일에서 복사할 첫 번째 행과 마지막 행의 수 및 일괄 처리 크기를 포함하여 대량 복사 작업에 대한 다양한 제어 매개 변수를 설정합니다.

이 함수는 SQL Server에서 SELECT의 결과 집합을 대량 복사할 때 SELECT 문을 지정하는 데도 사용됩니다. eOption을 BCPHINTS로 설정하고 iValue가 SELECT 문을 포함하는 SQLTCHAR 문자열에 대한 포인터를 갖도록 설정합니다.

이러한 컨트롤 매개 변수는 사용자 파일과 SQL Server 테이블 간에 복사할 때만 의미가 있습니다. 컨트롤 매개 변수 설정은 bcp_sendrow 사용하여 SQL Server에 복사된 행에 영향을 주지 않습니다.

예시

// Variables like henv not specified.  
SQLHDBC      hdbc;  
DBINT      nRowsProcessed;  
  
// Application initiation, get an ODBC environment handle, allocate the  
// hdbc, and so on.  
...   
  
// Enable bulk copy prior to connecting on allocated hdbc.  
SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP, (SQLPOINTER) SQL_BCP_ON,  
   SQL_IS_INTEGER);  
  
// Connect to the data source, return on error.  
if (!SQL_SUCCEEDED(SQLConnect(hdbc, _T("myDSN"), SQL_NTS,  
   _T("myUser"), SQL_NTS, _T("myPwd"), SQL_NTS)))  
   {  
   // Raise error and return.  
   return;  
   }  
  
// Initialize bulk copy.   
if (bcp_init(hdbc, _T("address"), _T("address.add"), _T("addr.err"),  
   DB_IN) == FAIL)  
   {  
   // Raise error and return.  
   return;  
   }  
  
// Set the number of rows per batch.   
if (bcp_control(hdbc, BCPBATCH, (void*) 1000) == FAIL)  
   {  
   // Raise error and return.  
   return;  
   }  
  
// Set file column count.   
if (bcp_columns(hdbc, 1) == FAIL)  
   {  
   // Raise error and return.  
   return;  
   }  
  
// Set the file format.   
if (bcp_colfmt(hdbc, 1, 0, 0, SQL_VARLEN_DATA, '\n', 1, 1)  
   == FAIL)  
   {  
   // Raise error and return.  
   return;  
   }  
  
// Execute the bulk copy.   
if (bcp_exec(hdbc, &nRowsProcessed) == FAIL)  
   {  
   // Raise error and return.  
   return;  
   }  
  
printf_s("%ld rows processed by bulk copy.", nRowsProcessed);  
  

참고 항목

대량 복사 함수