Поделиться через


bcp_control

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Изменяет параметры по умолчанию для различных параметров управления для массового копирования между файлом и 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 (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), в столбец varchar(max) в сервере SQL Server 2005 (9.x) или более поздней версии, следует указать 80. Аналогичным образом, если вы указываете 80 при экспорте данных из столбца varchar(max), он будет сохранен так же, как текстовые столбцы сохраняются в формате 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 вместе с собственным клиентом 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 in задает последнюю строку файла данных для копирования в таблицу базы данных.

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

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

BCPODBC
Если значение TRUE, указывает, что значения datetime и smalldatetime, сохраненные в формате символов, будут использовать префикс и суффикс временной метки ODBC. Параметр BCPODBC применяется только к DB_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);  
  

См. также

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