Время прочтения: 6 мин.

Добрый день, друзья!

Существует множество источников данных. Источники, как и сами данные, в значительной степени отличаются друг от друга. ETL (Extract Transform Load) позволяет организовать процессы передачи и преобразовании данных между различными источниками. Наиболее распространёнными источниками данных являются СУБД (Системы Управления Базами Данных).

В данной статье мы расскажем, как организовать ETL процесс между СУБД PostgreSQL, MS SQL и Oracle с помощью SQL Server Integration Services (SSIS).

PostgreSQL является целевой СУБД. На текущий момент преимущественно используются MS SQL, Oracle, Teradata, Hadoop. В связи с чем и появляется потребность в ETL механизмах, для совместного использования данных между различными СУБД.

Для организации ETL процесса необходимо выполнить следующие подготовительные шаги:

  • Получить доступ к БД на серверах MS SQL, Oracle, PostgreSQL
  • Запросить установку MS Visual Studio
  • Получить права на размещение SSIS пакетов
  • Убедиться, что установлены драйверы БД PostgreSQL Unicode (ODBC), SQLOLEDB.1 (OLEDB), Oracle Provider for OLE DB.

Организация ETL процесса

Создание ETL процесса представлено следующими основными шагами:

  1. Создание проекта в MS Visual Studio.

В MS Visual Studio последовательно выбираем — Файл > Создать > Проект > Business Intelligence > Integration Services > Integration Services Project.

2. Создание подключения ODBC PostgreSQL.

На рабочем столе Windows последовательно выполняем — Ctrl+Esc > ODBC > 32 bit ODBC Administrator > Пользовательский DSN > Добавить > PostgreSQL Unicode > Далее заполняем поля подключения и учетные данные PostgreSQL сервера > Test > Save

2.1 Добавление подключения ODBC PostgreSQL в проект MS Visual Studio.

В проекте MS Visual Studio последовательно выбираем Диспетчеры подключений > Создать подключение > ODBC > Добавить > Далее выбираем ранее созданное подключение > OK

3. Добавление подключения OLE DB Oracle в проект MS Visual Studio.

В проекте MS Visual Studio последовательно выбираем — Диспетчеры подключений > Создать подключение OLE DB > Создать > Собственный поставщик OLE DB\Oracle Provider for OLE DB > Заполняем поля подключения и учетные данные Oracle сервера > Проверить соединение > ОК

4. Добавление подключения OLE DB MS SQL в проект MS Visual Studio.

В проекте MS Visual Studio последовательно выбираем — Диспетчеры подключений > Создать подключение OLE DB > Создать > Собственный поставщик OLE DB\SQL Server Native Client 11.0 > Заполняем настройки и учетные данные MS SQL сервера > Проверить соединение > ОК

5. Добавление в проект MS Visual Studio и настройка потока данных между MS SQL и PostgreSQL.

В проекте MS Visual Studio выбираем вкладку «Поток управления». В поле этого потока из вкладки «Панель элементов служб SSIS» переносится элемент «Задача потока данных».

5.1. Добавление источника OLE DB.

В проекте MS Visual Studio необходимо выбрать вкладку «Поток данных». В поле данного потока из вкладки «Панель элементов служб SSIS» необходимо перенести элемент «Источник OLE DB».

5.2. Настройка источника на подключение к MS SQL.

Нажимаем правую кнопку мыши на элементе «Источник OLE DB» и левую кнопку мыши на пункте «Изменить».

Выберем соединение OLE DB и «Режим доступа к данным». Например, существующее подключение «XXXXXX.TB40_XXXXXXXX» и «Команда SQL» соответственно.

5.3. Добавление назначения ODBC.

В проекте MS Visual Studio выбираем вкладку «Поток данных». В поле этого потока из вкладки «Панель элементов служб SSIS» переносим элемент «Назначение ODBC».

5.4. Настройка назначения на подключение к PostgreSQL.

Нажимаем правую кнопку мыши на элементе «Назначение ODBC» и левую кнопку мыши на пункте «Изменить».

Режим доступа рекомендуется установить в положение «Имя таблицы — пакеты» так как это более производительный способ вставки данных.

5.5 Добавление преобразования данных.

Элемент «Преобразование данных» необходим при копировании разнотипных данных между СУБД, так как могут происходить коллизии типов, кодировок, длины полей и т.д. Данный элемент позволяет управлять преобразованиями и обрабатывать ошибки.

Элемент «Преобразование данных» добавляем как и предыдущие элементы из вкладки «Панель элементов служб SSIS».

6. Добавление в проект MS Visual Studio и настройка потока данных между Oracle и PostgreSQL.

В проекте MS Visual Studio выбираем вкладку «Поток управления». В поле этого потока из вкладки «Панель элементов служб SSIS» переносим элемент «Задача потока данных».

Новая задача потока данных заполняется аналогичным с п.5 образом. За исключением настройки источника OLE DB, который будет подключен к Oracle.

7. Ускорение вставки данных на PostgreSQL.

При вставке большого количества данных создается избыточная нагрузка на Transaction LOG. В данном случае имеется возможность ускорить процесс вставки за счет временного отключения логирования транзакций для отдельной таблицы.

ALTER TABLE test." Korneev1" SET UNLOGGED 	--Отключает логирование
ALTER TABLE test." Korneev1" SET LOGGED         --Включает логирование

Отключение и включение логирования транзакций, можно добавить в проект в виде задач «Выполнение SQL».

8. Пример успешного запуска проекта.

Резюмируем

На текущий момент, с помощью SSIS пакетов, ETL процессы могут быть дополнены данными СУБД PostgreSQL. В данной статье рассмотрена лишь малая часть возможностей SSIS и PostgreSQL. PostgreSQL позволяет подключать NoSQL источники, а с помощью SSIS имеется возможность объединить данные большого количества СУБД или файловых источников для решения широкого спектра дата-инженерных задач.