IBCPSession::BCPInit (OLE DB)
Инициализирует структуру массового копирования, выполняет проверку ошибок, проверяет правильность имен файла данных и файла форматирования, а затем открывает эти файлы.
Синтаксис
HRESULT BCPInit( const wchar_t *pwszTable, const wchar_t *pwszDataFile, const wchar_t *pwszErrorFile, int eDirection);
Замечания
Метод BCPInit необходимо вызывать перед вызовом любого другого метода массового копирования. Метод BCPInit выполняет необходимые инициализации для массового копирования данных между рабочей станцией и SQL Server.
Метод BCPInit исследует структуру целевой или исходной таблицы базы данных, а не файл данных. Он указывает значения форматов данных на основе каждого столбца в таблице, представлении базы данных или результирующем наборе SELECT. Эта спецификация включает тип данных каждого столбца, присутствие или отсутствие в данных признака длины и допустимости значений NULL и строки байтов признака конца и ширину для типов данных с фиксированной длиной. Метод BCPInit устанавливает эти значения следующим образом.
Указанный тип данных представляет собой тип данных столбца в таблице базы данных, представлении или результирующем наборе SELECT. Тип данных перечислен в собственных типах данных SQL Server, указанных в файле заголовка собственного клиента SQL Server (sqlncli.h). Их значения строятся по следующему образцу: BCP_TYPE_XXX. Данные представлены в компьютерной форме. Это значит, что данные из столбца с целочисленным типом данных представлены четырехбайтовой последовательностью с прямым или обратным порядком следования байтов в зависимости от компьютера, создавшего файл данных.
Если тип данных базы данных имеет фиксированную длину, то для данных файла данных также задается фиксированная длина. Методы массового копирования, обрабатывающие данные (например, IBCPSession::BCPExec) анализируют строки данных, ожидая, что длина данных в файле данных будет совпадать с длиной данных, определенной в таблице или представлении базы данных или списке столбцов SELECT. Например, данные в столбце базы данных, определенные как char(13), должны быть представлены в виде 13 символов для каждой строки данных в файле. Данные фиксированной длины могут быть обозначены префиксом с признаком значения NULL, если столбец базы данных допускает значения NULL.
При копировании данных в SQL Server файл данных должен содержать данные для каждого столбца в таблице базы данных. При копировании данных из SQL Server данные из всех столбцов таблицы или представления базы данных или результирующего набора SELECT копируются в файл данных.
При копировании данных в SQL Server порядковый номер столбца в файле данных должен совпадать с порядковым номером столбца в таблице базы данных. При копировании из SQL Server метод BCPExec размещает данные исходя из порядкового номер столбца в таблице базы данных.
Если тип данных в базе данных является типом с переменной длиной (например, varbinary(22)), или если столбец базы данных может содержать значения NULL, данные в файле данных предваряются признаком длины и допустимости значений NULL. Ширина признака изменяется в зависимости от типа данных и версии массового копирования. Параметр BCP_OPTION_FILEFMT метода IBCPSession::BCPControl обеспечивает совместимость между более ранними файлами данных для массового копирования и серверами с более новыми версиями SQL Server, указывая, когда ширина индикаторов в данных меньше, чем ожидаемая.
Примечание |
---|
Чтобы изменить значения форматов данных, указанные для файла данных, пользуйтесь методами IBCPSession::BCPColumns и IBCPSession::BCPColFmt. |
Массовое копирование в SQL Server можно оптимизировать для таблиц, не содержащих индексы, установив параметр базы данных select into/bulkcopy.
Аргументы
pwszTable[in]
Имя таблицы базы данных, в которую или из которой выполняется копирование. Имя может включать имя базы данных или имя владельца. Например, "pubs.username.titles", "pubs..titles", "username.titles".Если аргумент eDirection имеет значение BCP_DIRECTION_OUT, аргумент pwszTable может являться именем представления базы данных.
Если аргумент eDirection имеет значение BCP_DIRECTION_OUT и инструкция SELECT задана с помощью метода BCPControl перед вызовом метода BCPExec, аргумент pwszTable должен иметь значение NULL.
pwszDataFile[in]
Имя пользовательского файла, в который или из которого выполняется копирование.pwszErrorFile[in]
Имя файла ошибок, который заполняется сообщениями о ходе выполнения, сообщениями об ошибках и копиями строк, которые не удалось скопировать из пользовательского файла в таблицу. Если аргумент pwszErrorFile имеет значение NULL, файл ошибок не используется.eDirection[in]
Направление операции копирования: либо BCP_DIRECTION_IN, либо BCP_DIRECTION _OUT. BCP_DIRECTION _IN обозначает копирование из пользовательского файла в таблицу базы данных; BCP_DIRECTION _OUT обозначает копирование из таблицы базы данных в пользовательский файл.
Значения кода возврата
S_OK
Метод выполнен успешно.E_FAIL
Произошла ошибка, связанная с поставщиком. Подробные сведения можно получить при помощи интерфейса ISQLServerErrorInfo.E_OUTOFMEMORY
Недостаточно памяти.E_INVALIDARG
Один или несколько аргументов не были правильно заданы. Например, указано недопустимое имя файла.
См. также