Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

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

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

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

· Инструкция BULK INSERT и поставщик набора строк OPENROWSET преобразуют данные непосредственно в набор строк OLE DB.

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

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

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

· Переключения пакета;

· Проверка ограничений CHECK;

· Способ регистрации массовых транзакций. Это имеет важное значение для баз данных, которые обычно используют модель полного восстановления;

· Упорядочивание экспортированных данных;

· Импортирование параллельных данных;

· Блокировка таблицы;

· Выполнение триггера.

Для операций по массовому экспорту не существует никаких специальных методик по оптимизации. Эти операции используют инструкции SELECT.

Форматы данных для импорта или экспорта данных

Командами bcp, инструкциями BULK INSERT и INSERT... SELECT * FROM OPENROWSET(BULK...) поддерживается использование специализированного файла – «файла форматирования» с целью хранения сведений о формате для каждого поля в файле данных.

BULK INSERT (Transact-SQL)

Выполняет импорт файла данных в таблицу или представление базы данных в формате, указанном пользователем, в SQL Server 2008 R2. Эта инструкция используется для эффективной передачи данных между SQL Server и разнородными источниками данных.

Синтаксис

Transact-SQL

BULK INSERT [database_name.[schema_name]. | schema_name.] [table_name | view_name] FROM 'data_file' [ WITH ([ [, ] BATCHSIZE = batch_size ] [ [, ] CHECK_CONSTRAINTS ] [ [, ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] [ [, ] DATAFILETYPE = { 'char' | 'native'| 'widechar' | 'widenative' } ] [ [, ] FIELDTERMINATOR = 'field_terminator' ] [ [, ] FIRSTROW = first_row ] [ [, ] FIRE_TRIGGERS ] [ [, ] FORMATFILE = 'format_file_path' ] [ [, ] KEEPIDENTITY ] [ [, ] KEEPNULLS ] [ [, ] KILOBYTES_PER_BATCH = kilobytes_per_batch ] [ [, ] LASTROW = last_row ] [ [, ] MAXERRORS = max_errors ] [ [, ] ORDER ({ column [ ASC | DESC ] } [,...n ]) ] [ [, ] ROWS_PER_BATCH = rows_per_batch ] [ [, ] ROWTERMINATOR = 'row_terminator' ] [ [, ] TABLOCK ] [ [, ] ERRORFILE = 'file_name' ])]

Аргументы

 

database_name – имя базы данных, в которой находится указанная таблица или представление. Если не указано, предполагается текущая база данных.

schema_name – имя схемы таблицы или представления. Указание аргумента schema_name необязательно, но, если этот аргумент не указан и схема пользователя, выполняющего операцию массового импорта, отличается от схемы таблицы или представления, SQL Server возвращает сообщение об ошибке и операция массового импорта не выполняется.

table_name – имя таблицы или представления, куда производится массовый импорт данных. Могут указываться только те представления, в которых все столбцы относятся к одной и той же базовой таблице.

'data_file' – п олный путь и имя файла данных, который содержит импортируемые в указанную таблицу или представление данные. Аргумент data_file должен содержать действительный путь с того сервера, на котором запущен SQL Server. Если аргумент data_file является удаленным файлом, имя должно быть в формате UNC.

Имя UNC имеет вид \\Systemname\ShareName\Path\FileName.

BATCHSIZE=batch_size – указывает число строк в одном пакете. Каждый пакет копируется на сервер за одну транзакцию. SQL Server фиксирует или откатывает транзакцию для каждого из пакетов.



Поделиться:


Последнее изменение этой страницы: 2016-12-11; просмотров: 176; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.184.124 (0.008 с.)