Published on

March 1, 2007

Понимание задачи Bulk Insert в SQL Server

В этой статье мы рассмотрим задачу Bulk Insert в SQL Server и ее функциональность для импорта данных в базу данных. Задача Bulk Insert доступна с версии SQL Server 7.0 и известна своей впечатляющей эффективностью.

Прежде чем погрузиться в детали, важно отметить, что задача Bulk Insert предлагает превосходную скорость импорта файлов, содержащих большое количество данных в общих форматах. Однако есть определенные ограничения и соображения, которые необходимо учесть, чтобы полностью использовать ее потенциал.

Одно из наиболее важных соображений при работе с большими источниками данных – настройка целевой базы данных с моделью восстановления Bulk-logged. Это можно сделать в разделе “Опции” диалогового окна “Свойства базы данных” в SQL Server Management Studio. Важно выполнить резервное копирование до и после операции вставки и затем вернуться к полной модели восстановления.

Для повышения эффективности рекомендуется блокировать целевую таблицу и избегать блокировки на уровне строк. Это можно сделать, включив опцию “блокировка таблицы при массовой загрузке” с помощью хранимой процедуры sp_tableoption или выполнив команду BULK INSERT с подсказкой TABLOCK.

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

Если возможно, рекомендуется скопировать исходный файл на тот же сервер, на котором будет выполняться задача Bulk Insert. Это помогает избежать задержек, связанных с передачей файла по сети во время выполнения пакета. Кроме того, это позволяет игнорировать дополнительные требования, которые возникают из контекста безопасности, в котором работает BULK INSERT.

Важно отметить, что пакет, содержащий задачу Bulk Insert, может быть выполнен только членами роли sysadmin fixed server.

Чтобы сделать более крупные загрузки данных более управляемыми и повысить параллелизм, рекомендуется разделить всю загрузку на отдельные пакеты с использованием параметра BATCHSIZE команды BULK INSERT. Эти пакеты затем обрабатываются как отдельные транзакции, если задача присоединяется к уже выполняющейся транзакции.

При замене существующих записей более эффективно обрезать целевую таблицу или пересоздать ее, а не использовать полностью зарегистрированную команду DELETE.

Чтобы продемонстрировать реализацию этих рекомендаций, мы воспользуемся примером, размещенным на веб-сайте MSDN. Этот пример основан на образцовой базе данных AdventureWorks, поэтому убедитесь, что она установлена.

Вот упрощенное пошаговое руководство:

  1. Создайте новый проект типа Integration Services в SQL Server Business Intelligence Studio.
  2. Добавьте задачу Execute SQL в Control Flow проекта и создайте необходимую таблицу с помощью предоставленного оператора T-SQL.
  3. Создайте менеджер подключений к плоскому файлу, указывающий на исходный файл данных.
  4. Добавьте задачу Bulk Insert в Control Flow и подключите ее к задаче Execute SQL.
  5. Настройте задачу Bulk Insert, указав соединение OLE DB, целевую таблицу и исходный файл.
  6. Настройте параметры в редакторе задачи Bulk Insert по мере необходимости.
  7. Запустите пакет и проверьте содержимое целевой таблицы.

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

В заключение, задача Bulk Insert в SQL Server является мощным инструментом для эффективного импорта больших объемов данных в базу данных. Понимая ее ограничения и следуя bewt практикам, вы можете максимально использовать ее потенциал и улучшить производительность операций импорта данных.

Следите за нашей следующей статьей, где мы рассмотрим файлы формата и их роль в улучшении возможностей обработки задачи Bulk Insert.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.