В тази статия обясних как можем да разделяме и експортираме данни от таблицата на база данни на SQL Server в бази данни на Oracle и MySQL. Този процес се основава на условието, дефинирано в SSIS като „условна разделена трансформация “. Условното разделяне на трансформацията е като изявление на case на всеки език за програмиране. Използвайки условно, можем да пренасочим изхода на компонент в множество дестинации, което се основава на условие, дефинирано в условния разделен компонент.
Настройка на демонстрация
Можем да извличаме данни от различни платформи за бази данни, като използваме ODBC връзка, докато използваме инструменти за данни на SQL Server. Повечето от платформите за бази данни предоставят своите драйвери за свързване, които могат да се използват за конфигуриране на връзката между приложение и база данни.
Ще експортирам данни от таблицата на клиентите на „AdventureWorks2014 ” база данни към Oracle и MySQL въз основа на условието, дефинирано в разделяне на условия. Данните ще бъдат разделени въз основа на „StateProvinceName ” колона „Клиенти ” таблица. Записи със стойността, наречена „Калифорния ” в „StateProvinceName ” колоната ще бъде експортирана в базата данни на Oracle и записи със стойността, наречена „Вашингтон ” ще бъде експортиран в MySQL база данни.
Инсталирах Oracle 11g express edition и MySQL 8.0 на моята локална машина. Създадох база данни XE в Oracle и „WideWorldImportors ” база данни на MySQL сървър. Създадох „Клиент ” таблица и в двете бази данни. По-долу е SQL кодът за създаване на таблица.
CREATE TABLE customers ( cust_id INT, cust_customername VARCHAR(500), cust_contactnumber VARCHAR(50), cust_contactnumbertype VARCHAR(10), cust_email VARCHAR(150), cust_addresstype VARCHAR(10), cust_address VARCHAR(1500), cust_city VARCHAR(50), cust_state VARCHAR(50), cust_postalcode INT, cust_countryname VARCHAR(100) )
Докато използваме компонент за поток от данни на инструментите за данни на SQL Server, можем да прехвърляме данни между различни бази данни чрез конфигуриране на ODBC драйвери. Инструментите за данни на SQL Server, които можем да инсталираме от мениджъра на връзки, вече поддържат Oracle Client, но за MySQL трябва да създадем ODBC източник на данни.
Инструментите за данни на SQL Server са 32-битово приложение и работи в 32-битов режим. Следователно трябва да изтеглим 32-битовия ODBC драйвер на MySQL. Вижте изображението по-долу за справка:
Трябва да инсталираме “Connector/ODBC 8.0.11 ”, за да свържете MySQL база данни с помощта на ODBC драйвер. ODBC 8.0.11 драйвер е наличен за 64-битова ОС платформа. Следователно трябва да използваме по-стара версия на ODBC драйвери. Вижте изображението по-долу:
Вместо да използвам драйвери за свързване, предоставени от MySQL, използвах ODBC драйвер за MySQL разработено от Devart.
Devart ODBC Driver за MySQL е мощен и високопроизводителен драйвер за свързване. Той е независим от платформата, лесен за конфигуриране и поддържа инструменти на трети страни за свързване на MySQL база данни. По-долу са характеристиките.
- Поддържа SSL и SSH защитена връзка.
- Съвместим с всяка версия на MySQL. Той поддържа MariaDB, база данни Azure за MySQL и Amazon Aurora.
- Съвместим с много инструменти за анализ на трети страни.
- Независима от платформата. Той поддържа както 32-битови, така и 64-битови операционни платформи и много други.
Можете да изтеглите 30-дневна пробна версия на ODBC драйвер за MySQL тук . Вижте следното изображение за справка:
След като драйверите се изтеглят, инсталирайте ги, като стартирате настройката.
След като драйверите са инсталирани, трябва да конфигурираме източника на ODBC данни за свързване на MySQL база данни. За да направите това, отворете ODBC източници на данни (32-битови). Намира се в контролния панел>> Административни инструменти>> ODBC източници на данни. Вижте изображението по-долу за справка:
Отворете ODBC източници на данни (32-битови). Диалоговият прозорец „Администратор на източник на данни ODBC (32-битов) " ще отвори. В този диалогов прозорец щракнете върху „Добавяне “. Друг диалогов прозорец „Създаване на нов източник на данни ”, който има всички ODBC драйвери, инсталирани на компютъра, ще се отвори. От този списък изберете „Devart ODBC Driver for MySQL ” и кликнете върху „Край “. Вижте следното изображение за справка:
След като щракнете върху „Край “, ще се отвори диалогов прозорец за конфигуриране на параметрите за свързване на MySQL. В този диалогов прозорец можете да дефинирате параметрите за свързване. Предоставете името и описанието, за да разпознаете източника на данни в съответните полета. В „Сървър ” текстовото поле предоставя името на името на хоста или IP адреса на компютъра/сървъра, където е инсталиран MySQL. Предоставете подходящо потребителско име и парола за влизане в сървъра и изберете базата данни. Вижте следното изображение за справка:
Инсталирах MySQL на моята локална машина, следователно предоставих „localhost“ като текстово поле на сървъра. Свързвам се със сървъра от „root“ потребител, следователно потребителят е „root“. В идеалния случай не е за предпочитане. Вместо root създайте друг потребител и го използвайте за удостоверяване на MySQL база данни. Създадох „WideWorldImportors ” база данни на MySQL сървър на база данни, следователно предоставих „WideWorldImportors ” в падащото поле на базата данни.
По същия начин, за да свържем база данни на Oracle чрез използване на SSDT, трябва да инсталираме клиентски софтуер на Oracle. Инструментите за данни на SQL Server работят в 32-битов режим, следователно трябва да се инсталира 32-битова версия на ODBC драйверите за Oracle. Можете да изтеглите Oracle Client от тук.
Тъй като всички знаем как да създадем пакет SSIS, ще обясня директно как да създадем задачата за поток от данни.
Създаване на задача за поток от данни
В задачата за поток от данни ще използваме четири компонента:
- ADO.NET източник за попълване на данни от база данни на SQL Server.
- Условно разделяне за разделяне на данни в множество набори.
- Конфигуриране на дестинацията на MySQL и дестинацията на Oracle
- Конфигурирайте пътя на данните, за да съхранявате изхода на условно разделяне към съответните бази данни.
Конфигуриране на ADO.NET източник
Плъзнете и пуснете „ADO.NET Source ” от SSIS Toolbox към „Поток на данни ” прозорци и го наречете „Данни за продажби ” както е показано на следното изображение:
Кликнете два пъти върху „Данни за продажбите “. Диалоговият прозорец „ADO.NET Source Editor " ще отвори. Тъй като мениджърът на връзки все още не е създаден, следователно „ADO.NET мениджър на връзки ” падащото поле е празно. За да създадете нова връзка в този диалогов прозорец, щракнете върху „Нова “. Друг диалогов прозорец „Конфигуриране на диспечера на връзки ” ще се отвори, както е показано на изображението по-долу:
В „Конфигуриране на ADO.NET Connection manager ” диалогов прозорец, щракнете върху „Нов ”, за да отворите „Диспечер на връзки ” диалогов прозорец.
В „Име на сървър ” текстово поле, въведете име или IP-адрес на сървъра, където е инсталиран SQL Server. SQL Server е инсталиран на моята локална машина, поради което предоставих „localhost\SQL2016 ” като текстово поле за име на сървъра. В падащото меню Удостоверяване изберете типа удостоверяване, използвано за свързване към SQL екземпляр. Удостоверявам се към SQL сървър, като използвам удостоверяване на Windows, следователно избрах удостоверяване на Windows в падащото поле. И накрая, в падащото поле на базата данни изберете името на базата данни, където се съхранява таблицата. Експортирам данни от „AdventureWorks2014 ” база данни, затова я избрах в „Име на база данни ” падащо поле. Вижте следното изображение:
След като конфигурацията приключи, щракнете върху „Тест на връзката ”, за да потвърдите свързаността с базата данни и щракнете върху “OK”.
Конфигурирахме ADO.NET мениджъра на връзки, така че мениджърът на връзките по подразбиране ще бъде избран автоматично в „ADO.NET Connection Manager ” падащо меню. За да извлечете данни от таблица, изберете „Таблица или Преглед ” в падащото поле за режим на достъп до данни. След като изберете опцията „Таблица или изглед“ в падащото меню, тя извежда списък на всички таблици, създадени в базата данни. От този списък изберете „Клиенти ” таблица, както е показано на следното изображение:
Конфигуриране на условно разделяне
Сега ще използваме условната разделена трансформация за експортиране на данни в различни работни листове на excel въз основа на условие. Плъзнете условния разделен компонент от кутията с инструменти SSIS към прозореца на потока от данни и го преименувайте на „Филтър за данни ” както е показано на изображението по-долу:
Споменах по-рано, изходът от данни от таблицата „Клиенти“ ще бъде експортиран в множество бази данни на Oracle и MySQL въз основа на условието, дефинирано в „Условно разделяне ” компонент.
Първо, свържете източника на ADO.Net към условна разделена трансформация. За да направите това, щракнете върху синята стрелка на пътя на потока от данни под „Customers SQL DB ” и го плъзнете към условна разделена трансформация, както е показано на изображението по-долу:
За да конфигурирате условно разделяне, щракнете двукратно върху „Редактор на трансформация на условно разделяне“. Диалогов прозорец „Редактор на условна разделена трансформация ” ще се отвори, както е показано на следното изображение:
За да приложите условие към „StateProvinceName ”, първо разгънете възела на колоната, плъзнете „StateProvinceName ” (Раздел 1) и го пуснете в решетката (Раздел 3). Условието за филтриране на данни е в колоната „StateProvinceName“. Записи със стойност „Калифорния ” ще бъде експортиран в база данни на Oracle и записи със стойност „Washington ” ще бъде експортиран в MySQL база данни. Въз основа на условието ще използваме равно на (==) оператор. Уравнението е както следва:
[Cust_State]=="California" [Cust_State]=="Washington"
Вижте следното изображение:
След като условията са дефинирани, щракнете върху „OK“, за да запазите и затворите диалоговия прозорец.
Конфигуриране на MySQL дестинация
За да експортираме данни от SQL Server към MySQL и Oracle, следователно трябва да конфигурираме две дестинации. Първо, конфигурирайте дестинацията на MySQL. За да направите това, плъзнете и пуснете дестинацията на ODBC от кутията с инструменти SSIS и я преименувайте на „MySQL Database“, както е показано на изображението по-долу:
Щракнете двукратно върху местоназначението MySQL Database (ODBC Connection). Ще се отвори диалогов прозорец „Destination ODBC“. В този диалогов прозорец щракнете върху „Ново“. Ще се отвори друг диалогов прозорец „Конфигуриране на ODBC Connection Manager“, както е показано на следното изображение:
Друг диалогов прозорец „Диспечер на връзки " ще отвори. В диалоговия прозорец списък с DSN, създадени на машината, който е попълнен в „Използвайте потребителско или системно име на източник на данни ” падащо поле. Тъй като вече сме конфигурирали ODBC DSN, изберете „MySQL Destination ” от падащия списък, както е показано на изображението по-долу:
Кликнете върху „Тест на връзката ”, за да потвърдите, че връзката е установена успешно и щракнете върху „OK“.
Сега в „ODBC Destination ” диалогов прозорец, изберете име на таблица от „Име на таблицата или изгледа ” падащо меню, както е показано на следното изображение:
След като дестинацията на базата данни MySQL е конфигурирана успешно, конфигурирайте дестинацията на базата данни на Oracle.
Конфигуриране на Oracle Destination
За да конфигурирате дестинацията на Oracle, плъзнете и пуснете „ADO.NET Destination“ в прозореца на потока от данни и го преименувайте на „Oracle Database“, както е показано на следното изображение:
Щракнете двукратно върху Oracle Database (ADO.NET дестинация). Диалогов прозорец „ADO.NET Destination Editor " ще отвори. В диалоговия прозорец щракнете върху „Нов “. Друг диалогов прозорец „Конфигуриране на ADO.NET Connection Manager” ще се отвори, както е показано на следното изображение:
На „Конфигуриране на ADO.NET Connection Manager ” диалогов прозорец, щракнете върху „Нов “. Ще се отвори друг диалогов прозорец „Диспечер на връзки“. За да конфигурираме свързаността към базата данни на Oracle, трябва да изберем „Net.Provider\OracleClient ” в „Доставчик " диалогов прозорец. Предоставете име на хост или IP адрес на сървъра на базата данни на Oracle в текстовото поле „Име на сървъра“. Предоставете потребителско име и парола за свързване на екземпляр на база данни на Oracle. Както споменах, инсталирах екземпляр на Oracle като моя локална машина, следователно предоставих „localhost“ в текстовото поле за име на сървъра. Свързах базата данни на oracle, използвайки потребител „Продажби“, следователно в текстовото поле „Потребителско име“ въведох „Продажби“ като потребителско име и въведох паролата за него. Вижте следното изображение:
За да проверите дали връзката е установена, щракнете върху „Тест на връзката ” и след като връзката бъде установена, щракнете върху „OK ”, за да затворите диалоговия прозорец.
Сега в „редактор на дестинация ADO.NET ” диалогов прозорец, изберете име на таблица или изглед, където данните трябва да бъдат записани. Експортирам данни в таблицата на клиентите, затова избрах „Продажби.Клиент ” таблица, както е показано на следното изображение:
Конфигуриране на пътя на данните
След като и двете дестинации са конфигурирани, конфигурирайте пътя на данните за прехвърляне на данни в съответните бази данни. За да направите това, плъзнете синята стрелка на пътя към данните под условната разделена трансформация и я пуснете върху ODBC Destination (MySQL Destination). Когато пътят на данните се свърже с ODBC дестинация, се появява диалогов прозорец. Изберете дестинацията от „Изход ” падащо поле за насочване на данните, които се извличат от SQL заявка. Диалоговият прозорец изглежда като изображението по-долу:
Падащият списък се попълва с всички условия, които са дефинирани в условна разделяна трансформация. В този случай падащото меню включва три опции.
- Изход на MySQL
- Изход на Oracle
- Изход по подразбиране
Както бе споменато по-горе, записи със стойността „Вашингтон ” от колоната „StateProvinceName“ ще бъде експортирана в MySQL база данни, следователно изберете MySQL Output.
Сега съпоставете изходните колони на условна трансформация с таблицата на клиентите на MySQL базата данни. За да направите това, щракнете двукратно върху „База данни MySQL ” (ODBC местоназначение) и в диалоговия прозорец „ODBC дестинация” изберете „Mapping ” опция, която се намира в левия панел на диалоговия прозорец, както е показано на изображението по-долу:
В горното изображение „Входни колони“ са името на колоната на таблицата на SQL Server, а колоната на местоназначението ще бъде името на колоната на таблицата „Клиенти“ на MySQL лист. В тази демонстрация името на колоната на таблиците SQL и MySQL са едни и същи, така че входните и изходните й колони се картографират автоматично.
Повторете процеса на конфигуриране на потока от данни за пътя на данните „Oracle Output“ по същия начин. По-долу са промените.
- Трябва да изберем „Oracle Output“ в диалоговия прозорец за избор на вход-изход, както е показано на изображението по-долу:
- В „ADO.NET Destination Editor“ проверете дали съпоставянията на входно-изходните колони са правилни, както е показано на изображението по-долу:
След като всички конфигурации бъдат завършени, цялата задача за поток от данни изглежда като изображението по-долу:
Тестване на SSIS пакет
Сега стартирайте пакета, като щракнете върху бутона „Старт“ в лентата с менюта. Ако пакетът завърши изпълнението си успешно, той трябва да изглежда като изображението по-долу:
Пакетът е разделил изхода на SQL данни чрез използване на условно разделяне и е експортиран 4445 записа в базата данни MySQL и 2285 записа в базата данни на Oracle.
Резюме
В тази статия конфигурирахме ODBC връзката за MySQL, създадохме SSIS пакет с поток от данни. Използвахме Условна разделена трансформация за да разделите изхода, извлечен от базата данни на SQL сървър и да го експортирате в бази данни Oracle и MySQL.
Полезни инструменти:
Devart SSIS Data Flow Components – позволяват ви да интегрирате база данни и облачни данни чрез SQL Server Integration Services.
Devart ODBC Drivers – осигуряват високопроизводителни и богати на функции решения за свързване за приложения, базирани на ODBC.