V tomto článku vysvětlím, jak můžeme rozdělit a exportovat data databázové tabulky Oracle do více listů souboru Excel pomocí balíčku služeb integrace SQL Server.
DBA často požadovali generování zpráv Ad-Hoc z databáze. Nedávno jsem byl požádán o vygenerování zprávy z databáze. Chtějí, abych poskytl zprávu ve více listech souboru Excel. Existují různé způsoby, jak to udělat, ale dotaz byl náročný na zdroje. Proto chci extrahovat data z databáze jedním spuštěním a rozhodl jsem se použít balíček integračních služeb SQL Server. Datové nástroje SQL Server mají jednu komponentu nazvanou Podmíněná rozdělená transformace které lze použít k dosažení úkolu.
Pomocí datových nástrojů SQL Serveru můžeme získávat data z různých databázových platforem pomocí připojení ODBC. Většina databázových platforem poskytuje své ovladače připojení, které lze použít ke konfiguraci spojení mezi aplikací a databází.
Co je podmíněná rozdělená transformace
Transformace podmíněného rozdělení může směrovat datové řádky do různých výstupů v závislosti na obsahu dat. Implementace transformace podmíněného rozdělení je jako rozhodovací struktura CASE v programovacím jazyce. Vyhodnocuje výrazy a na základě výsledků nasměruje datový řádek na zadaný výstup. Tato transformace také poskytuje výchozí výstup, takže pokud řádek neodpovídá žádnému výrazu, je přesměrován na výchozí výstup. (Reference MSDN :https://docs.microsoft.com/en-us/sql/integration-services/data-flow/transformations/conditional-split-transformation?view=sql-server-2017).
Nastavení ukázky
Nainstaloval jsem na svůj počítač Oracle 11g express edition. Vytvořil jsem tabulku s názvem EMPLOYEESDATA v HR schéma XE databázi a přidal několik fiktivních záznamů z AdventureWorks2014 databáze.
Níže uvedený kód vytvoří tabulku:
CREATE TABLE "HR"."EMPLOYEE_DATA" ( "ID obchodní entity" NUMBER(*,0), "Titul" NVARCHAR2(8), "Jméno" NVARCHAR2(50), "Prostřední jméno" NVARCHAR2(50), "Příjmení" NVARCHAR2(50), "Suffix" NVARCHAR2(10), "JobTitle" NVARCHAR2(50), "PhoneNumber" NVARCHAR2(25), "PhoneNumberType" NVARCHAR2(50), "EmailAddress" NVARCHAR2(50), "NUMBER(EmailPromotion") *,0), "AddressLine1" NVARCHAR2(60), "AddressLine2" NVARCHAR2(60), "City" NVARCHAR2(30), "StateProvinceName" NVARCHAR2(50), "PostalCode" NVARCHAR2(15), "CountryRegionName" NVARCHAR2 50)) Vytváření segmentu Okamžité pctfree 10 pcTused 40 initrans 1 maxtrans 255 nocompress logging úložiště (počáteční 65536 příští 1048576 Minoxtents 1 maxExtents 2147483645 pctincrease 0 Feelelist Skupiny 1 Buffer_Pool Default_Pault Defaults);Pro připojení databáze Oracle pomocí SSDT musíme nainstalovat klientský software Oracle. Datové nástroje SQL Serveru pracují v 32bitovém režimu, proto by měla být nainstalována 32bitová verze ovladačů ODBC pro Oracle. Oracle Client si můžete stáhnout zde.
Vytvořil jsem soubor aplikace Excel s názvem „HRData.xls “, který obsahuje dva pracovní listy s názvem Austrálie a Kanada . Data budou rozdělena na základě hodnoty CountryRegionName sloupec. Pokud je hodnota sloupce CountryRegionName sloupec je Kanada poté bude uložen v Kanadě listu a pokud hodnota sloupce CountryRegionName je Austrálie poté bude uložen v Austrálii pracovní list.
Protože všichni víme, jak vytvořit balíček SSIS, přímo vysvětlím, jak vytvořit úlohu toku dat.
Vytvoření úlohy toku dat
V úloze Tok dat použijeme následující tři komponenty:
- Zdroj ADO.NET k naplnění dat z databáze Oracle.
- Podmíněné rozdělení pro rozdělení dat do více sad.
- Cíl Excel se dvěma sešity nazvanými „Austrálie“ a „Kanada“.
Konfigurace zdroje ADO.NET
Přetáhněte Zdroj ADO.NET z SSIS Toolbox do Datového toku windows a pojmenujte jej Údaje o zaměstnancích jak je znázorněno na následujícím obrázku:
Dvakrát klikněte na Údaje o zaměstnancích . Editor zdroje ADO.NET otevře se dialogové okno. Zde jsme zatím nevytvářeli žádné připojení, proto Správce připojení ADO.NET rozevírací pole je prázdné. Vytvoříme nové připojení. Chcete-li to provést, klikněte na Nový v tomto dialogovém okně. Poté se zobrazí další dialogové okno Konfigurovat správce připojení se otevře, jak je znázorněno na obrázku níže:
V Konfigurovat správce připojení ADO.NET dialogovém okně klikněte na Nový . Další dialogové okno, Správce připojení , otevře se.
Ve výchozím nastavení .Net Providers\SQLClient Data Provider bude vybráno v Poskytovateli rozevíracím seznamu. Při naplňování dat z databáze Oracle vybereme Poskytovatel dat OracleClient .
V Název serveru do textového pole zadejte název nebo IP-adresu serveru, na kterém je nainstalován Oracle 11g. Uživatelské jméno a heslo bude použito pro připojení k databázi Oracle. Nainstaloval jsem Oracle na svůj místní virtuální počítač, takže název serveru bude localhost . Chystám se připojit databázi pomocí HR uživatel tedy uživatelské jméno bude HR . Zadejte příslušné heslo a klikněte na OK . Viz následující obrázek:
Po dokončení konfigurace klikněte na Testovat připojení ověřte připojení k databázi a klikněte na OK.
Nakonfigurovali jsme správce připojení ADO.NET, takže výchozí správce připojení bude vybrán automaticky v Správci připojení ADO.NET rozevíracího seznamu. Budeme načítat data z tabulky, proto vyberte Tabulka nebo Zobrazit v rozevíracím seznamu režim přístupu k datům. Již jsem vytvořil EMPLOYEESDATA tabulky v HR Schéma databáze Oracle, proto vyberte HR.EmployeesData vNázev tabulky nebo zobrazení rozevíracího pole, jak je znázorněno na obrázku níže:
Konfigurace podmíněného rozdělení
Nyní, abychom exportovali data v různých listech Excelu na základě podmínky, použijeme podmíněnou rozdělenou transformaci. Přetáhněte komponentu podmíněného rozdělení z SSIS nástrojů do Datového toku okno, jak je znázorněno na obrázku níže.
Již dříve jsem zmínil výstup dat zHR.EmployeeData tabulka bude exportována ve více listech na základě podmínky definované v Podmíněné rozdělení komponenta.
Nejprve propojíme zdroj ADO.Net s transformací podmíněného rozdělení. Chcete-li to provést, klikněte na modrou šipku na cestě toku dat v dolní části Údajů o zaměstnancích komponentu a přetáhněte ji na transformaci podmíněného rozdělení, jak je znázorněno na obrázku níže.
Nyní nakonfigurujeme podmíněnou rozdělenou transformaci. Jak jsem již zmínil, data tabulky HR.EmployeesData rozdělíme na základě hodnoty CountryRegionName sloupec a uložte je do různých listů.
Chcete-li to provést, poklepejte na Editor podmíněné rozdělené transformace . Editor podmíněné rozdělené transformace otevře se dialogové okno, jak je znázorněno na následujícím obrázku:
Jak můžete vidět na obrázku výše, editor podmíněné rozdělené transformace má tři sekce, které určují, jak budou data směrována do dalších komponent.
Oddíl A :V této části pod Sloupce bude uveden seznam složek výstupních sloupců odvozený ze zdrojové komponenty ADO.Net, který lze použít k definování podmínek pro rozdělení dat.
Oddíl B :V této části budou uvedeny různé funkce, které lze použít k převodu výstupu do jiného formátu a použít k definování podmínek pro rozdělení dat.
Sekce C :V této části můžete vytvořit podmínku, která může rozdělit výstup zdroje ADO.Net do více sad výsledků.
Přidáme podmínku v sekci-C. Nejprve tedy rozbalte uzel sloupce a přetáhněte CountryRegionName sloupec (sekce A) a umístěte jej do mřížky (sekce C), jak je znázorněno na následujícím obrázku:
V tomto příkladu definujeme naši podmínku na základě CountryRegionName sloupec. Seznam zaměstnanců z „Kanady“ bude uložen v excelovém listu s názvem Kanada a seznam zaměstnanců z Austrálie bude uložen v Austrálii pracovní list. Na základě podmínky budeme používat rovná se (==) operátor. Rovnice bude vypadat takto:
[CountryRegionName]=="Austrálie"[CountryRegionName]=="Kanada"
Po definování podmínek klikněte na OK uložte a zavřete dialogové okno.
Konfigurace cíle aplikace Excel
Nyní, když máme rozdělený datový tok do více cest, přidáme cíl pro každou cestu. Protože budeme exportovat data tabulky v různých listech aplikace Excel, musíme vytvořit dvě cíle aplikace Excel. Chcete-li to provést, přetáhněte připojení aplikace Excel z SSIS Toolbox jak je znázorněno na obrázku níže:
Chcete-li nakonfigurovat cíl aplikace Excel, poklepejte na položku Cíl aplikace Excel. Správce připojení aplikace Excel otevře se dialogové okno. V tomto dialogovém okně klikněte na Nový jak je znázorněno na následujícím obrázku:
Další dialogové okno s názvem Excel Connection Manager otevře. V tomto dialogovém okně poskytneme cestu, kde se soubor Excel nachází. Vytvořil jsem Údaje o zaměstnancích soubor na mé ploše. Projdeme souborovým systémem, vybereme soubor a klikneme na OK jak je znázorněno na obrázku níže:
Nyní v režimu přístupu k datům v rozevíracím seznamu vyberte Tabulka nebo zobrazení a v Název listu aplikace Excel v rozevíracím seznamu vyberte Austrálie $, jak je znázorněno na obrázku níže:
Nyní nakonfiguruji datovou cestu. Chcete-li to provést, přetáhněte modrou šipku datové cesty z transformace podmíněného rozdělení na Zaměstnanci Austrálie cílová komponenta excelu. Když připojíte datovou cestu k cíli aplikace Excel, objeví se dialogové okno pro výběr výstupu, který chceme nasměrovat k vybranému cíli. Dialogové okno bude vypadat následovně:
Dialogové okno obsahuje všechny výstupy v rozevíracím seznamu, který je dostupný z transformace podmíněného rozdělení. V tomto případě bude rozevírací seznam obsahovat dvě možnosti.
- Austrálie
- Kanada
- Výchozí výstup
Poklepáním na cílovou komponentu aplikace Excel mapujte sloupce tabulky se sloupci aplikace Excel. Chcete-li to provést, poklepejte na cílovou komponentu aplikace Excel a v Editoru cílů aplikace Excel dialogovém okně vyberte Mapování možnost umístěná v levém podokně dialogového okna, jak je znázorněno na obrázku níže:
Na obrázku výše Vstupní sloupec je název sloupce tabulky Oracle a sloupec cíle bude název sloupce listu Excel. V této ukázce je název sloupce tabulky a souboru aplikace Excel stejný. Tedy Editor cíle Excel automaticky mapuje vstupní a výstupní sloupce.
Stejným způsobem zopakuji proces konfigurace datového toku pro Kanadu datová cesta.
- Musíme vybrat Kanadu v Výběr vstupu a výstupu dialogové okno, jak je znázorněno na obrázku níže.
- V Excel Destination Edito r, vyberte Kanada$ v Název listu aplikace Excel rozevíracího pole, jak je znázorněno na obrázku níže.
Po dokončení všech konfigurací bude celá úloha toku dat vypadat následovně:
Testování balíčku SSIS
Nyní spustíme balíček a uvidíme, jak to fungovalo. Chcete-li to provést, klikněte na tlačítko Start tlačítko na liště nabídek. Pokud balíček úspěšně dokončí provádění, měl by vypadat takto:
Jak ukazuje obrázek výše, balíček vložil 1 záznam vaustralském regionu pracovní list a 2 záznamy v Kanadě pracovní list.
Shrnutí
V tomto článku jsme vytvořili balíček SSIS s jediným datovým tokem. Do datového toku jsme přidali transformaci podmíněného rozdělení, která rozdělí data do více cest. Poté jsme každou z těchto datových cest nasměrovali do různých excelových listů.
Odkazy :
Exportujte data SQL do více sešitů souboru aplikace Excel.
Užitečné nástroje:
Devart SSIS Data Flow Components – umožňují integrovat databázová a cloudová data prostřednictvím SQL Server Integration Services.
Ovladače Devart ODBC – poskytují vysoce výkonná a na funkce bohatá řešení připojení pro aplikace založené na ODBC.