Операции массового импорта и массового экспорта

Microsoft SQL Server 2005 поддерживает массовый экспорт данных из таблиц SQL Server и массовый импорт данных в таблицы или несекционированные представления SQL Server. Доступны следующие основные методы.

Метод Описание Импортирует данные Экспортирует данные

BCP-программа

Программа командной строки (Bcp.exe), массово экспортирующая и импортирующая данные и создающая файлы форматирования.

Да

Да

инструкция BULK INSERT

Инструкция Transact-SQL, импортирующая данные непосредственно из файла данных в таблицу базы данных или несекционированное представление.

Да

Нет

инструкция INSERT ... SELECT * FROM OPENROWSET(BULK...)

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

Да

Нет

Внутри- и внепроцессная операция

Инструкция BULK INSERT и функция OPENROWSET(BULK) в SQL Server выполняются внутри процесса, совместно используя одно и то же адресное пространство памяти. Так как файлы данных открываются процессом SQL Server, данные не копируются между клиентским процессом и процессами SQL Server. Сведения о мерах безопасности при импорте данных при помощи инструкций BULK INSERT или INSERT ... SELECT * FROM OPENROWSET(BULK...) см. в разделе Массовый импорт данных при помощи инструкции BULK INSERT или OPENROWSET(BULK...).

Команда bcp, напротив, запускается вне процесса. Чтобы переместить данные через пространства памяти процесса, программа bcp должна использовать трансляцию межпроцессных данных. Трансляция межпроцессных данных**является процессом преобразования параметров вызова метода в поток байтов. Это может значительно увеличить загрузку процессора. Однако так как bcp производит синтаксический анализ и преобразует данные в собственный формат хранения в клиентском процессе, она может освободить процесс SQL Server от обработки и преобразования данных. Поэтому, если имеется ограничение ЦП, производительность массового импорта будет выше при использовании bcp или служб SSIS на компьютере с несколькими ЦП или на разных компьютерах, чем при использовании команд BULK INSERT или INSERT ... SELECT * FROM OPENROWSET(BULK).

Файлы форматирования

Программа bcp, BULK INSERT и INSERT ... Инструкции SELECT * FROM OPENROWSET(BULK...) поддерживают использование специализированного файла под названием файл форматирования для хранения сведений о форматировании для каждого поля в файле данных. Файл форматирования также может содержать сведения о соответствующей таблице SQL Server. Файл форматирования может быть использован с целью предоставления всех сведений о форматировании, необходимых для массового экспорта данных из экземпляра SQL Server и массового импорта данных в него.

Файлы форматирования обеспечивают гибкость при интерпретации данных, существующих в файле данных, в процессе импорта и при форматировании данных в файле данных в процессе экспорта. Эта гибкость исключает необходимость записи специализированного кода для интерпретации данных или изменения формата данных для особых нужд в SQL Server или внешних приложениях. Таким образом, например, если экспортируются данные для загрузки в приложение, файлу данных потребуются значения, разделенные запятой. Для вставки запятых в качестве разделителей полей можно использовать файл форматирования.

SQL Server 2005 поддерживает два типа файлов форматирования: XML и не-XML файлы форматирования. Не-XML файлы форматирования поддерживались ранними версиями SQL Server; файлы форматирования XML являются новыми в SQL Server 2005.

Единственный инструмент, который может сформировать файл форматирования, — это программа bcp. Дополнительные сведения см. в разделе Создание файла форматирования. Дополнительные сведения о файлах форматирования см. в разделе Файлы форматирования для импорта или экспорта данных.

ms187042.note(ru-ru,SQL.90).gifПримечание.
В том случае, если файл форматирования не предоставлен в процессе операций массового экспорта или импорта, пользователь может перезаписать форматирование по умолчанию в командной строке.

Обработчик запросов и массовый импорт

Чтобы импортировать массив данных в экземпляр SQL Server, команда bcp, инструкции BULK INSERT и INSERT ...SELECT * FROM OPENROWSET(BULK...) работают с обработчиком запросов.

Все три метода преобразовывают данные в файл данных в наборах строк OLEDB. Но методы преобразования различаются следующим образом.

  • Программа bcp считывает файл данных и отсылает поток TDS к API-интерфейсу программы массового копирования (Bulk Copy Program, BCP) в SQL Server, который затем преобразует данные в наборы строк OLE DB.
  • Инструкция BULK INSERT и поставщик набора строк OPENROWSET преобразуют данные непосредственно в набор строк OLE DB.

Наборы строк OLEDB затем вставляются в целевую таблицу обработчиком запросов, который планирует и оптимизирует каждую операцию.

Вопросы производительности

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

  • Переключения пакета.
  • Проверка ограничений CHECK.
  • Как регистрируются массовые транзакции Это имеет важное значение для баз данных, которые обычно используют полную модель восстановления.
  • Упорядочивание экспортированных данных.
  • Импортирование параллельных данных.
  • Блокировка таблицы.
  • Выполнение триггера.

Дополнительные сведения см. в разделе Оптимизация производительности массового импорта данных.

ms187042.note(ru-ru,SQL.90).gifПримечание.
Для операций по массовому экспорту не существует никаких специальных методик по оптимизации. Эти операции просто выбирают данные из исходной таблицы с помощью инструкции SELECT.

См. также

Основные понятия

Основные рекомендации по массовому импорту данных
Форматы данных для импорта или экспорта данных
Сценарии массового импорта и экспорта данных
Обработка одиночной инструкции SQL

Другие ресурсы

Performing Bulk Load of XML Data (SQLXML 4.0)
Службы SQL Server Integration Services
Performing Bulk Copy Operations
Программа bcp
BULK INSERT (Transact-SQL)
Файлы форматирования для импорта или экспорта данных
OPENROWSET (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005