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

Применимо к: даSQL Server (все поддерживаемые версии)

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

Примечание

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

Примечание

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

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

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

    Учетная запись пользователя, от имени которой выполняются программа bcp, инструкции BULK INSERT или INSERT... SELECT * FROM OPENROWSET(BULK...), должна иметь соответствующие разрешения для таблицы (назначаемые владельцем таблицы). Дополнительные сведения о разрешениях, необходимых для каждого метода, см. в разделах Программа bcp, 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)