Подготовка массового импорта данных (SQL Server)

Область применения: SQL Server

Команда bcp , инструкция BULK INSERT и функция OPENROWSET(BULK) могут быть использованы только для массового импорта из файла данных.

Примечание.

Однако можно написать пользовательское приложение, которое будет выполнять массовый импорт из объектов, отличных от текстовых файлов. Для массового импорта данных из буферов памяти используйте расширения bcp для интерфейса программирования приложения SQL Server Native Client (ODBC) или интерфейса OLE DB IRowsetFastLoad . Чтобы выполнить массовый импорт из таблицы данных C#, необходимо использовать API-интерфейс ADO.NET для операций массового копирования SqlBulkCopy.

Примечание.

Массовый импорт данных в удаленную таблицу не поддерживается.

Используйте следующие рекомендации при массовом импорте данных из файла данных в экземпляр Microsoft SQL Server:

  • Получите необходимые разрешения для учетной записи пользователя.

    Учетная запись пользователя, от имени которой выполняются программа bcp , инструкции BULK INSERT или INSERT... SELECT * FROM OPENROWSET(BULK...), должна иметь соответствующие разрешения для таблицы (назначаемые владельцем таблицы). Дополнительные сведения о разрешениях, необходимых каждому методу, см . в статье bcp Utility, OPENROWSET (Transact-SQL) и BULK INSERT (Transact-SQL).

  • Используйте модель восстановления с неполным протоколированием.

    Данное правило относится к базам данных, использующим модель полного восстановления. Эта модель восстановления полезна при выполнении массовых операций в неиндексированной таблице ( куче). Восстановление с неполным протоколированием позволяет избежать переполнения журнала транзакций, поскольку при этом не выполняется операция записи в журнал для вставок отдельных строк. Дополнительные сведения о модели восстановления с массовым ведением журнала см. в статьях "Модели восстановления" (SQL Server).

    Рекомендуется настроить базу данных на использование модели восстановления с неполным протоколированием до операции массового импорта. Сразу же необходимо переключить базу данных на модель полного восстановления. Дополнительные сведения см. в разделе "Просмотр или изменение модели восстановления базы данных (SQL Server)".

    Примечание.

    Дополнительные сведения о сокращении до минимума объема данных, выводимых в журнал при выполнении операций массового импорта, см. в разделе Предварительные условия для минимального протоколирования массового импорта данных.

  • Резервное копирование после массового импорта данных.

    Для баз данных, использующих простую модель восстановления, после выполнения операции массового импорта рекомендуется создание полной или разностной резервной копии. Дополнительные сведения см. в статье "Создание полной резервной копии базы данных ( SQL Server) или создание разностной резервной копии базы данных (SQL Server)".

    Чтобы произвести полное восстановление или восстановление с неполным протоколированием, достаточно создать резервную копию журнала. Дополнительные сведения см. в разделе Резервные копии журналов транзакций (SQL Server).

  • Удаление индексов таблиц для улучшения производительности при выполнении больших операций массового импорта.

    Данное правило справедливо при импорте большого объема данных по сравнению с объемом данных, уже находящимся в таблице. В этом случае удаление индексов из таблицы до выполнения операции массового импорта позволит существенно повысить производительность.

    Примечание.

    Однако если меньший объем загружаемых данных уже находится в таблице, то удаление индексов, наоборот, понизит производительность. В этом случае восстановление индексов может занять больше времени, чем будет сэкономлено во время операции массового импорта.

  • Найдите и удалите скрытые символы в файле данных.

    Многие программы и текстовые редакторы отображают скрытые символы, находящиеся обычно в конце файла данных. Во время операции массового импорта скрытые символы в файле данных в формате ASCII могут привести к появлению сообщения об ошибке «Обнаружено непредвиденное значение NULL». Чтобы решить проблему, обычно необходимо найти и удалить все скрытые символы.

См. также

Импорт и экспорт массовых данных с помощью служебной программы bcp (SQL Server)
Импорт массовых данных с помощью BULK INSERT или OPENROWSET(BULK...) (SQL Server)
bcp Utility
BULK INSERT (Transact-SQL)
Форматы данных для массового экспорта или импорта (SQL Server)
OPENROWSET (Transact-SQL)