Использование файлов данных и файлов форматирования

Простейшая программа массового копирования выполняет следующие действия.

  1. Вызывает процедуру bcp_init для задания массового копирования (задания значения BCP_OUT) из таблицы или представления в файл данных.

  2. Вызов процедуры bcp_exec для выполнения операции массового копирования.

Файл данных создается в собственном режиме; следовательно, данные из всех столбцов таблицы или представления хранятся в файле данных в том же формате, что и в базе данных. Затем файл можно с помощью операции массового копирования скопировать на сервер, выполнив те же шаги и установив значение DB_IN вместо DB_OUT. Это возможно только в случае, когда структура исходной и целевой таблиц идентична. Результирующий файл данных можно также ввести в качестве входных данных для программы bcp utility с помощью переключателя /n (собственный режим).

Для массового копирования результирующего набора из инструкции Transact-SQL, а не непосредственно из таблицы или представления:

  1. Вызовите bcp_init для задания массового копирования из таблицы, но вместо имени таблицы задайте NULL.

  2. Вызовите bcp_control, задав для параметра eOption значение BCPHINTS, а для параметра iValue — указатель на строку SQLTCHAR, содержащую инструкцию Transact-SQL.

  3. Чтобы выполнить операцию массового копирования, вызовите функцию bcp_exec.

В качестве инструкции Transact-SQL подходит любая инструкция, которая создает результирующий набор. Создается файл данных, содержащий первый результирующий набор инструкции Transact-SQL. Если инструкция Transact-SQL создает несколько результирующих наборов (например, если она содержит операторы COMPUTE или COMPUTE BY), операция массового копирования пропускает все результирующие наборы, следующие за первым.

Для создания файла данных, в котором данные столбцов хранятся в ином формате, чем в таблице, вызывается процедура bcp_columns, чтобы указать число изменяемых столбцов, а затем процедура bcp_colfmt для каждого столбца, формат которого будет изменен. Это делается после вызова bcp_init, но до вызова bcp_exec. Процедура bcp_colfmt задает формат, в котором данные столбца будут храниться в файле данных. Он может быть использован при входящем или исходящем массовом копировании. Процедуру bcp_colfmt можно также использовать для задания признаков конца строк и столбцов. Например, если данные не содержат символов табуляции, с помощью bcp_colfmt можно создать файл, использующий символы табуляции в качестве признаков конца столбца.

При массовом копировании с использованием процедуры bcp_colfmt легко создать файл форматирования с описанием созданного файла данных, если вызвать процедуру bcp_writefmt после последнего вызова процедуры bcp_colfmt.

При массовом входящем копировании из файла данных, описанного файлом форматирования, файл форматирования читается с помощью вызова процедуры bcp_readfmt после вызова bcp_init, но до вызова bcp_exec.

Функция bcp_control при массовом копировании в SQL Server из файла данных управляет несколькими параметрами. Функция bcp_control устанавливает значения параметров (например, максимальное число ошибок до завершения операции, номер строки, с которого начинается массовое копирование, номер строки, на которой оно заканчивается, и размер пакета.