В тази статия ще обясня как можем да разделяме и експортираме данни от таблица на база данни на Oracle в множество работни листа на файл на Excel с помощта на пакета от услуги за интеграция на SQL Server.
Често DBA искаха да генерират Ad-Hoc отчети от база данни. Наскоро ме помолиха да генерирам отчет от базата данни. Искат да предоставя отчет в множество работни листа на файл на Excel. Има различни начини да го направите, но заявката беше ресурсоемка. Затова искам да извлека данни от базата данни с едно изпълнение и реших да използвам пакета от услуги за интеграция на SQL Server. Инструментите за данни на SQL Server имат един компонент, наречен Условна разделена трансформация който може да се използва за постигане на задачата.
Използвайки инструменти за данни на SQL Server, можем да извличаме данни от различни платформи на база данни, като използваме ODBC връзката. Повечето от платформите за бази данни предоставят своите драйвери за свързване, които могат да се използват за конфигуриране на връзка между приложение и база данни.
Какво е условна разделена трансформация
Трансформацията с условно разделяне може да насочва редове с данни към различни изходи в зависимост от съдържанието на данните. Изпълнението на трансформацията на условно разделяне е като структура за решение CASE в език за програмиране. Той оценява изразите и въз основа на резултатите насочва реда с данни към посочения изход. Тази трансформация също така осигурява изход по подразбиране, така че ако даден ред не съвпада с израз, той се насочва към изхода по подразбиране. (Справка за MSDN :https://docs.microsoft.com/en-us/sql/integration-services/data-flow/transformations/conditional-split-transformation?view=sql-server-2017) .
Настройка на демонстрация
Инсталирах Oracle 11g express edition на моята машина. Създадох таблица, наречена EMPLOYEESDATA в HR схема на XE база данни и добави някои фиктивни записи от AdventureWorks2014 база данни.
Кодът по-долу ще създаде таблица:
СЪЗДАЙТЕ ТАБЛИЦА "HR"."EMPLOYEE_DATA" ( "BusinessEntityID" NUMBER(*,0), "Title" NVARCHAR2(8), "FirstName" NVARCHAR2(50), "MiddleName" NVARCHAR2(50), "LastName" NVARCHAR2(50), "Suffix" NVARCHAR2(10), "JobTitle" NVARCHAR2(50), "PhoneNumber" NVARCHAR2(25), "PhoneNumberType" NVARCHAR2(50), "EmailAddress" NVARCHAR2(50), "NUMBERPromo *,0), "AddressLine1" NVARCHAR2(60), "AddressLine2" NVARCHAR2(60), "City" NVARCHAR2(30), "StateProvinceName" NVARCHAR2(50), "PostalCode" NVARCHAR2(15), "CountryRegionName" NVARCHAR2 50)) Създаване на сегмент Незабавно Pctfree 10 Pctused 40 initrans 1 Maxtrans 255 Nocompress съхранение на сеч (първоначално 65536 Следващ 1048576 Minextents 1 Maxextents 2147483645 Pctincrease 0 Freelist 1 Freelist Групи 1 Групи на Flash_cacheЗа да свържем базата данни на Oracle с помощта на SSDT, трябва да инсталираме клиентския софтуер на Oracle. Инструментите за данни на SQL Server работят в 32-битов режим, следователно трябва да се инсталира 32-битовата версия на ODBC драйверите за Oracle. Можете да изтеглите Oracle Client от тук.
Създадох файл на Excel, наречен „HRData.xls “, който има два работни листа, наречени Австралия и Канада . Данните ще бъдат разделени въз основа на стойността на CountryRegionName колона. Ако стойността на колоната на CountryRegionName колоната е Канада след това ще се съхранява в Канада работен лист и ако стойността на колоната на CountryRegionName е Австралия след това ще се съхранява в Австралия работен лист.
Тъй като всички знаем как да създадем SSIS пакет, ще обясня директно как да създадем задача за поток от данни.
Създаване на задача за поток от данни
В задачата за поток от данни ще използваме следните три компонента:
- ADO.NET източник за попълване на данни от базата данни на Oracle.
- Условно разделяне за разделяне на данните на множество набори.
- Дестинация в Excel с две работни книги, наречени „Австралия“ и „Канада“.
Конфигуриране на ADO.NET източник
Плъзнете и пуснете ADO.NET Source от SSIS Toolbox към Поток от данни windows и го наречете Данни за служители както е показано на следното изображение:
Щракнете двукратно върху Данни за служителите . Редакторът на източници на ADO.NET ще се отвори диалогов прозорец. Тук все още не сме създали никаква връзка, следователно ADO.NET мениджър на връзки падащото поле е празно. Ще създадем нова връзка. За да направите това, щракнете върху Ново в този диалогов прозорец. След това друг диалогов прозорец,Конфигуриране на диспечера на връзки ще се отвори, както е показано на изображението по-долу:
В Конфигуриране на ADO.NET Connection Manager диалогов прозорец, щракнете върху Ново . Друг диалогов прозорец, Диспечер на връзки , ще се отвори.
По подразбиране .Net Providers\SQLClient Data Provider ще бъде избран в Доставчик падащо меню. Тъй като попълваме данни от базата данни на Oracle, ще изберем OracleClient Data Provider .
В Име на сървъра текстово поле, въведете име или IP-адрес на сървъра, на който е инсталиран Oracle 11g. Потребителско име и парола ще бъдат използвани за свързване на базата данни на Oracle. Инсталирах Oracle на моя локална виртуална машина, следователно името на сървъра ще бъде localhost . Ще свържа база данни с помощта на HR потребител, следователно потребителското име ще бъде HR . Предоставете подходящата парола и щракнете върху OK . Вижте следното изображение:
След като конфигурацията приключи, щракнете върху Тестиране на връзката за да проверите връзката с базата данни и щракнете върху OK.
Конфигурирахме диспечера на връзки ADO.NET, така че мениджърът на връзки по подразбиране ще бъде избран автоматично в ADO.NET Connection Manager падащо списъчно поле. Ще извлечем данни от таблицата, следователно изберете Таблица или Преглед в падащото поле за режим на достъп до данни. Вече създадох ДАННИ НА СЛУЖИТЕЛИ таблица в HR Схема на базата данни на Oracle, следователно изберете HR.EmployeesData вИме на таблицата или изгледа падащо меню, както е показано на изображението по-долу:
Конфигуриране на условно разделяне
Сега, за да експортираме данни в различни работни листове на Excel въз основа на условие, ще използваме условната разделна трансформация. Плъзнете условния разделен компонент от SSIS кутия с инструменти къмПоток на данни прозорец, както е показано на изображението по-долу.
Споменах по-рано, изходът на данни наHR.EmployeeData таблицата ще бъде експортирана в множество работни листа въз основа на условието, дефинирано в Условно разделяне компонент.
Първо, ще свържем източника на ADO.Net с условна разделена трансформация. За да направите това, щракнете върху синята стрелка върху пътя на потока от данни в долната част на Данни за служителите компонент и го плъзнете към условна разделена трансформация, както е показано на изображението по-долу.
Сега ще конфигурираме условна разделена трансформация. Както споменах по-рано, ще разделим данните от таблицата HR.EmployeesData въз основа на стойността на CountryRegionName колона и ги съхранявайте в различни работни листове.
За да направите това, щракнете двукратно върху Редактор на условна разделена трансформация . Редакторът на условна разделена трансформация диалоговият прозорец ще се отвори, както е показано на следното изображение:
Както можете да видите на изображението по-горе, редакторът на условна разделена трансформация има три секции, които определят как данните ще бъдат пренасочени към следващите компоненти.
Раздел А :В този раздел, подКолони Ще бъде изброен списък с папки с изходните колони, извлечен от компонента източник на ADO.Net, който може да се използва за дефиниране на условия за разделяне на данните.
Раздел Б :В този раздел ще бъдат изброени различни функции, които могат да се използват за преобразуване на изход в различен формат и използвани за дефиниране на условия за разделяне на данни.
Раздел C :В този раздел можете да създадете условие, което може да раздели изхода на източника ADO.Net на множество набори от резултати.
Ще добавим условието в раздел C. Затова първо разгънете възела на колоната и плъзнете CountryRegionName колона (раздел A) и я пуснете в решетката (раздел C), както е показано на следното изображение:
За този пример ще дефинираме нашето условие въз основа на CountryRegionName колона. Списъкът на служителите от „Канада“ ще се съхранява в работния лист на Excel с име Канада и списък на служителите от Австралия ще се съхранява в Австралия работен лист. Въз основа на условието ще използваме равно на (==) оператор. Уравнението ще бъде както следва:
[CountryRegionName]=="Австралия"[CountryRegionName]=="Канада"
След като условията са дефинирани, щракнете върху OK за да запазите и затворите диалоговия прозорец.
Конфигуриране на цел на Excel
Сега, когато имаме разделен поток от данни в множество пътища, ще добавим дестинация за всеки път. Тъй като ще експортираме таблични данни в различни работни листове на Excel, така че трябва да създадем две дестинации на Excel. За да направите това, плъзнете и пуснете връзката на Excel от SSIS Toolbox както е показано на изображението по-долу:
За да конфигурирате дестинация на excel, щракнете двукратно върху целта на Excel. Мениджърът на връзки в Excel ще се отвори диалогов прозорец. В този диалогов прозорец щракнете върху Ново както е показано на следното изображение:
Друг диалогов прозорец, наречен Excel Connection Manager ще отвори. В този диалогов прозорец ще предоставим път, където се намира файлът на Excel. Създадох данните за служителите файл на моя работен плот. Ще преминем през файловата система, ще изберете файла и щракнете върху OK както е показано на изображението по-долу:
Сега в режим за достъп до данни падащото меню, изберете Таблица или изглед и в Име на листа на Excel падащото меню, изберете Australia$, както е показано на изображението по-долу:
Сега ще конфигурирам пътя на данните. За да направите това, плъзнете синята стрелка на пътя към данните от условната разделена трансформация към Австралийски служители компонент дестинация на Excel. Когато свържете пътя към данните към дестинацията на Excel, ще се появи диалогов прозорец, в който да изберете изход, който искаме да насочим към избраната дестинация. Диалоговият прозорец ще изглежда по следния начин:
Диалоговият прозорец включва всички изходи в падащия списък, който е достъпен от условно разделяне на трансформация. В този случай падащият списък ще включва две опции.
- Австралия
- Канада
- Изход по подразбиране
Щракнете двукратно върху компонента дестинация на Excel, за да съпоставите колоните на таблицата с колоните на Excel. За да направите това, щракнете двукратно върху компонента местоназначение на Excel и в Excel Destination Editor диалогов прозорец, изберете Картографиране опция, разположена в левия панел на диалоговия прозорец, както е показано на изображението по-долу:
На горното изображениеВходна колона е името на колоната на таблицата Oracle и Колоната на местоназначението ще бъде името на колоната на листа на Excel. В тази демонстрация името на колоната на таблицата и файла на Excel са еднакви. Така че Excel Destination Editor автоматично ще картографира входните и изходните колони.
По същия начин ще повторя процеса на конфигуриране на потока от данни за Канада път към данни.
- Трябва да изберем Канада в Избор на вход и изход диалогов прозорец, както е показано на изображението по-долу.
- В Excel Destination Edito r, изберете Canada$ в Име на листа на Excel падащо меню, както е показано на изображението по-долу.
След като всички конфигурации бъдат завършени, цялата задача за поток от данни ще изглежда по следния начин:
Тестване на SSIS пакет
Сега нека стартираме пакета и да видим как работи. За да направите това, щракнете върху Старт бутон в лентата с менюта. Ако пакетът завърши изпълнението успешно, той трябва да изглежда по следния начин:
Както показва изображението по-горе, пакетът е вмъкнал 1 запис врегион Австралия работен лист и 2 записа в регион Канада работен лист.
Резюме
В тази статия създадохме пакет SSIS с един поток от данни. Добавихме трансформация с условно разделяне към потока от данни, за да разделим данните на множество пътища. След това насочихме всеки от тези пътища към различни работни листове на Excel.
Препратки :
Експортирайте SQL данни в множество работни книги на файл на Excel.
Полезни инструменти:
Devart SSIS Data Flow Components – позволяват ви да интегрирате база данни и облачни данни чрез SQL Server Integration Services.
Devart ODBC Drivers – осигуряват високопроизводителни и богати на функции решения за свързване за базирани на ODBC приложения.