бцп_контроль

Изменяет параметры по умолчанию для различных параметров управления для массового копирования между файлом и SQL Server.

Синтаксис

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

Аргументы

hdbc
Дескриптор соединения ODBC с поддержкой массового копирования.

eOption
Один из следующих вариантов:

BCPABORT
Останавливает операцию массового копирования, которая уже выполняется. Вызов bcp_control с помощью eOption BCPABORT из другого потока, чтобы остановить выполнение операции массового копирования. Параметр iValue игнорируется.

BCPBATCH
Число строк на пакет. Значение по умолчанию — 0, указывающее все строки в таблице, когда извлекаются данные или все строки в пользовательском файле данных, когда данные копируются в SQL Server. Значение меньше 1 сбрасывает BCPBATCH по умолчанию.

BCPDELAYREADFMT
Логическое значение, если задано значение true, приведет к тому, что bcp_readfmt читать при выполнении. Если значение false (по умолчанию), bcp_readfmt немедленно считывает файл формата. Ошибка последовательности возникает, если BCPDELAYREADFMT имеет значение true, и вызывается bcp_columns или bcp_setcolfmt.

Ошибка последовательности также возникает при вызове bcp_control(hdbc, BCPDELAYREADFMT после вызова bcp_control(hdbc, BCPDELAYREADFMT, (void *)TRUE), (void *)FALSE) и bcp_writefmt.

Дополнительные сведения см. в разделе "Обнаружение метаданных".

BCPFILECP
iValue содержит номер кодовой страницы для файла данных. Можно указать номер кодовой страницы, например 1252 или 850, или одно из следующих значений:

BCPFILE_ACP: данные в файле в Microsoft Windows?? кодовая страница клиента.

BCPFILE_OEMCP: данные в файле находится на кодовой странице OEM клиента (по умолчанию).

BCPFILE_RAW: данные в файле находится на кодовой странице SQL Server.

BCPFILEFMT
Номер версии формата файла данных. Это может быть 80 (SQL Server 2000), 90 (SQL Server 2005), 100 (SQL Server 2008 или SQL Server 2008 R2), 110 (SQL Server 2012) или 120 (SQL Server 2014). Значение по умолчанию — 120. Это полезно для экспорта и импорта данных в форматах, поддерживаемых более ранней версией сервера. Например, чтобы импортировать данные, полученные из текстового столбца на сервере SQL Server 2000, в столбец varchar(max) на сервере SQL Server 2005 или более поздней версии, следует указать 80. Аналогичным образом, если вы указываете 80 при экспорте данных из столбца varchar(max ), он будет сохранен так же, как текстовые столбцы сохраняются в формате SQL Server 2000 и могут быть импортированы в текстовый столбец сервера SQL Server 2000.

BCPFIRST
Первая строка данных в файл или таблицу для копирования. Значение по умолчанию — 1; Значение меньше 1 сбрасывает этот параметр по умолчанию.

BCPFIRSTEX
Для операций BCP out указывает первую строку таблицы базы данных для копирования в файл данных.

Для операций BCP указывает первую строку файла данных для копирования в таблицу базы данных.

Ожидается, что параметр iValue будет адресом подписанного 64-разрядного целого числа, содержащего значение. Максимальное значение, которое можно передать в BCPFIRSTEX, — 2^63-1.

BCPFMTXML
Указывает, что созданный файл формата должен быть в формате XML. Он отключен по умолчанию.

XML-файлы форматирования обеспечивают большую гибкость, но с некоторыми дополнительными ограничениями. Например, нельзя указать префикс и терминатор для поля одновременно, что возможно в старых файлах форматирования.

Замечание

XML-файлы форматирования поддерживаются только при установке SQL Server вместе с собственным клиентом SQL Server.

BCPHINTS
iValue содержит указатель строки символьной строки SQLTCHAR. Адресная строка указывает указания по обработке массового копирования SQL Server или инструкцию Transact-SQL, возвращающую результирующий набор. Если указана инструкция Transact-SQL, возвращающая несколько результирующих наборов, все результирующие наборы после первого пропускаются. Дополнительные сведения о указаниях по обработке массового копирования см. в программе bcp.

BCPKEEPIDENTITY
Если значение iValue равно TRUE, указывает, что функции массового копирования вставляют значения данных, предоставленные для столбцов SQL Server, определенных с ограничением удостоверения. Входной файл должен указать значения для столбцов удостоверений. Если это не задано, для вставленных строк создаются новые значения удостоверений. Все данные, присутствующих в файле для столбцов удостоверений, игнорируются.

BCPKEEPNULLS
Указывает, будут ли пустые значения данных в файле преобразованы в значения NULL в таблице SQL Server. Если значение iValue равно TRUE, пустые значения преобразуются в NULL в таблице SQL Server. Значение по умолчанию предназначено для преобразования пустых значений в значение по умолчанию для столбца в таблице SQL Server, если по умолчанию существует.

BCPLAST
Является последней строкой для копирования. Значение по умолчанию — копировать все строки; Значение меньше 1 сбрасывает этот параметр по умолчанию.

BCPLASTEX
Для операций BCP out указывает последнюю строку таблицы базы данных для копирования в файл данных.

Для операций BCP указывает последнюю строку файла данных для копирования в таблицу базы данных.

Ожидается, что параметр iValue будет адресом подписанного 64-разрядного целого числа, содержащего значение. Максимальное значение, которое можно передать в BCPLASTEX, равно 2^63-1.

BCPMAXERRS
Количество ошибок, разрешенных до сбоя операции массового копирования. Значение по умолчанию — 10; Значение меньше 1 сбрасывает этот параметр по умолчанию. Массовая копия накладывает не более 65 535 ошибок. Попытка задать этот параметр значением, превышающим 65 535, приводит к тому, что параметр имеет значение 65 535.

BCPODBC
Если значение TRUE, указывает, что значения datetime и smalldatetime , сохраненные в формате символов, будут использовать префикс и суффикс временной метки ODBC. Параметр BCPODBC применяется только к BCP_OUT.

При значении FALSE значение даты и времени , представляющее 1 января 1997 года, преобразуется в символьную строку: 1997-01-01 00:00:00.000. Если значение TRUE, то же значение даты и времени представлено следующим образом: {ts '1997-01-01 00:00:00.000'}.

BCPROWCOUNT
Возвращает количество строк, затронутых текущей (или последней) операцией BCP.

BCPTEXTFILE
Если значение TRUE, указывает, что файл данных является текстовым файлом, а не двоичным файлом. Если файл является текстовым файлом, BCP определяет, является ли файл Юникодом, проверив маркер байтов Юникода в первых двух байтах файла данных.

BCPUNICODEFILE
Если значение TRUE, указывает входной файл — это файл Юникода.

iValue
Значение указанного eOption. iValue — это целочисленное значение (LONGLONG), приведение к указателю void, чтобы обеспечить дальнейшее расширение до 64-разрядных значений.

Возвраты

SUCCEED или FAIL.

Замечания

Эта функция задает различные параметры управления для операций массового копирования, включая количество ошибок, разрешенных перед отменой массового копирования, числа первых и последних строк для копирования из файла данных и размер пакета.

Эта функция также используется для указания инструкции SELECT при массовом копировании из SQL Server результирующий набор SELECT. Задайте значение BCPHINTS и задайте для iValue указатель на строку SQLTCHAR, содержащую инструкцию SELECT.

Эти параметры управления имеют смысл только при копировании между пользовательским файлом и таблицей SQL Server. Параметры параметров управления не влияют на строки, скопированные в SQL Server с bcp_sendrow.

Пример

// 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);  
  

См. также

Функции массового копирования