Образец пакета исполнения инструкций SQL в цикле
В образце пакета выполнения инструкций SQL в цикле используется контейнер «цикл по каждому элементу» для повторного выполнения инструкций SQL, сохраненных в текстовых файлах в папке. Инструкции Transact-SQL создают пять таблиц в базе данных AdventureWorks, одну таблицу для каждой из действующих территорий продаж в США. Коллекция, указанная в перечислителе с циклом по каждому файлу, сопоставляется с переменной. Эта переменная используется в выражении свойства для обновления строки соединения в диспетчере подключения файлов для каждого элемента перечисления.
Данные в текстовом файле обладают несколькими недостатками: некоторые почтовые индексы ошибочно интерпретируются как числовые значения, и поэтому в них пропускаются начальные нули, также неверно определяются идентификаторы некоторых территорий продаж. Поток данных в пакете обнаруживает и исправляет неправильные почтовые индексы, записывает строки данных с неверной территорией продаж в файл и направляет верные строки данных в одну из пяти таблиц базы данных AdventureWorks.
При повторном запуске пакета перед вставкой данных таблицы усекаются.
Для открытия и запуска образца в локализованной версии Windows, возможно, понадобится заменить локализованное имя папки «Program Files».
Важно! |
---|
Образцы предназначены только для обучения. Они не предназначены для использования в рабочей среде и не тестировались в ней. Майкрософт не предоставляет техническую поддержку для этих образцов. |
Требования
Перед запуском этого образца пакета убедитесь, что выполняются следующие условия.
- Образец пакета и используемые им файлы данных должны быть установлены на локальном диске.
- Необходимо установить базу данных AdventureWorks и иметь на нее права администратора.
- Если необходимо запускать образец пакета только из командной строки, следует установить службы SQL Server 2005 Integration Services (SSIS).
- Если необходимо открывать пакет в конструкторе служб SSIS и запускать образец пакета, следует установить среду Business Intelligence Development Studio.
Дополнительные сведения по установке образцов см. в разделе «Установка образцов пакетов служб Integration Services» электронной документации по SQL Server 2005. Чтобы получить последнюю версию образцов, включая новые, выпущенные после исходной версии SQL Server 2005, см. веб-страницу «Образцы SQL Server 2005 и образцы баз данных (апрель 2006 г.)».
Размещение образца пакета
Если установка образцов была выполнена по умолчанию, то образец пакета выполнения инструкций SQL расположен в следующей папке.
C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\ExecuteSQLStatementsInLoop Sample\ExecuteSQLStatementsInLoop\
Для запуска образца пакета необходимы следующие файлы.
Файл | Описание |
---|---|
ExecuteSQLStatementsInLoop.dtsx |
Файл пакета. |
Customer.txt |
Файл исходных данных. |
CustomersWithInvalidTerritoryID.txt |
Файл, в который записываются неправильные данные. |
CreateProspectTableTerr1.sql |
Инструкция языка Transact-SQL, создающая таблицу Territory1. |
CreateProspectTableTerr2.sql |
Инструкция языка Transact-SQL, создающая таблицу Territory2. |
CreateProspectTableTerr3.sql |
Инструкция языка Transact-SQL, создающая таблицу Territory3. |
CreateProspectTableTerr4.sql |
Инструкция языка Transact-SQL, создающая таблицу Territory4. |
CreateProspectTableTerr5.sql |
Инструкция языка Transact-SQL, создающая таблицу Territory5. |
Выполнение образца
Пакет можно запустить из командной строки с помощью программы dtexec или выполнить в среде Business Intelligence Development Studio.
Если используется локализованная версия Windows, то для успешного запуска образца пакета может потребоваться обновить свойство ConnectionString всех диспетчеров подключения файлов, используемых в пакете. Следует проверить правильность пути, используемого диспетчером соединений на компьютере, и при необходимости изменить его, указав локализованное имя папки «Program Files».
Для этого образца может потребоваться заменить текст «Program Files» в свойстве ConnectionString для диспетчеров соединений CreateTableSQL, Customers и CustomersWithInvalidTerritoryID.
Выполнение пакета при помощи программы dtexec
Откройте окно командной строки.
Используйте команду Сменить каталог, cd для перехода в каталог программы dtexec «C:\Program Files\Microsoft SQL Server\90\DTS\Binn».
Введите следующую команду:
dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\ExecuteSQLStatementsInLoop Sample\ExecuteSQLStatementsInLoop\ExecuteSQLStatementsInLoop.dtsx"
Нажмите клавишу ВВОД.
Дополнительные сведения по запуску пакета с помощью программы dtexec см. в разделе «Программа dtexec» электронной документации по SQL Server 2005.
Запуск пакета в среде Business Intelligence Development Studio
Откройте среду Business Intelligence Development Studio.
В меню Файл выберите пункт Открыть и пункт Решение или проект.
Перейдите в папку образца ExecuteSQLStatementsInLoop, затем дважды щелкните файл с именем ExecuteSQLStatementsInLoop.sln.
В окне Обозреватель решений щелкните правой кнопкой ExecuteSQLStatementsInLoop.dtsx в папке Пакеты служб SSIS, а затем выберите пункт Выполнить пакет.
Важно! |
---|
Если образец пакета выполнения инструкций SQL в цикле открывается в конструкторе служб SSIS до первого запуска пакета, то задача потока данных отобразит предупреждение. Это предупреждение означает, что используемые пакетом таблицы SQL Server еще не существуют. Они создаются при первом запуске пакета. Если пакет был запущен хотя бы один раз, то при повторном открытии пакета в конструкторе служб SSIS это сообщение не выводится. Несмотря на предупреждение, пакет запускается успешно. |
Компоненты образца
В следующей таблице перечислены задачи, контейнеры, источники, преобразования, места назначения и диспетчеры соединений служб Integration Services, используемые в образце.
Элемент | Цель |
---|---|
Цикл Foreach |
Контейнер «цикл по каждому элементу» (Запуск инструкций SQL) с помощью перечислителя с циклом по каждому файлу последовательно обрабатывает файлы, содержащиеся в инструкции Transact-SQL. Контейнер «цикл по каждому элементу» включает задачу «Выполнение SQL». |
Задача «Выполнение SQL» |
Задача «Выполнение SQL» (Создание таблиц) подключается к базе данных AdventureWorks и запускает пять инструкций языка Transact-SQL, создающих таблицы. |
Задача «Поток данных» |
Задача «Поток данных» (Извлечение-очистка-загрузка данных) выполняет поток данных, извлекающий данные из текстового файла, очищает и распространяет их, а затем загружает в таблицы базы данных AdventureWorks. |
Источник «Плоский файл» |
Источник плоских файлов (Извлечение данных) извлекает данные из текстового файла. |
Преобразование «Условное разбиение» |
Преобразование «Условное разбиение» (Распределение строк по TerritoryID) направляет строки в разные выходы в зависимости от значения в столбце TerritoryID. Строки с неверными значениями поля TerritoryID направляются на выход по умолчанию. |
Преобразование «Производный столбец» |
Преобразование «Производный столбец» (Исправление почтового кода) очищает индексы путем добавления начальных нулей в четырехсимвольных почтовых индексах. |
Адресат OLE DB |
Пять адресатов OLE DB загружают данные в пять различных территориальных таблиц. |
Диспетчер подключения файлов |
Диспетчер подключения файлов (SQL создания таблиц) подключается к файлам, содержащим SQL-инструкции CREATE TABLE. |
Диспетчеры подключения плоских файлов |
Диспетчер подключения файлов (Customers) подключается к текстовому файлу, содержащему данные пользовательского источника. Диспетчер подключения файлов (CustomsWithInvalidTerritoryId) подключается к текстовому файлу, в который пакет записывает неверные данные. |
Диспетчер соединений OLE DB |
Диспетчер соединений OLE DB (local).AdventureWorks соединяется с базой данных AdventureWorks на локальном сервере. |
Результаты образца
Для просмотра результатов выполнения инструкций SQL в образце пакета исполнения инструкций SQL в цикле откройте окно «Запрос» в среде SQL Server Management Studio, после чего введите или скопируйте указанный далее SQL-запрос и выполните его.
SELECT * FROM AdventureWorks.dbo.Territory1
SELECT * FROM AdventureWorks.dbo.Territory2
SELECT * FROM AdventureWorks.dbo.Territory3
SELECT * FROM AdventureWorks.dbo.Territory4
SELECT * FROM AdventureWorks.dbo.Territory5
Этот запрос возвращает данные, извлеченные из текстового файла и загруженные в таблицы SQL Server.