sql >> Databasteknik >  >> RDS >> Oracle

Exportera Oracle Table till Excel-kalkylblad

I den här artikeln kommer jag att förklara hur vi kan dela upp och exportera data från en Oracle-databastabell till flera kalkylblad i en Excel-fil med hjälp av tjänstepaketet SQL Server-integrering.

Ofta bad DBA:er att generera ad-hoc-rapporter från en databas. Nyligen har jag blivit ombedd att generera en rapport från databasen. De vill att jag ska tillhandahålla en rapport i flera kalkylblad i en Excel-fil. Det finns olika sätt att göra det på men frågan var resurskrävande. Därför vill jag extrahera data från databasen med en exekvering och bestämde mig för att använda paketet med SQL Server-integreringstjänster. SQL Server-dataverktyg har en komponent som heter Conditional Split Transformation som kan användas för att uppnå uppgiften.

Med hjälp av SQL Server-dataverktyg kan vi hämta data från olika databasplattformar genom att använda ODBC-anslutningen. De flesta av databasplattformarna tillhandahåller sina anslutningsdrivrutiner som kan användas för att konfigurera en anslutning mellan applikation och databas.

Vad är villkorlig splittransformation

Conditional Split-transformationen kan dirigera datarader till olika utgångar beroende på innehållet i datan. Implementeringen av Conditional Split-transformationen är som en CASE-beslutsstruktur i ett programmeringsspråk. Den utvärderar uttryck, och baserat på resultaten dirigerar den dataraden till den angivna utgången. Denna transformation ger också en standardutgång, så att om en rad inte matchar något uttryck, dirigeras den till standardutgången. (MSDN-referens :https://docs.microsoft.com/en-us/sql/integration-services/data-flow/transformations/conditional-split-transformation?view=sql-server-2017) .

Demoinställningar

Jag har installerat Oracle 11g express edition på min maskin. Jag har skapat en tabell som heter EMPLOYEESDATA i HR schemat för XE databas och la till några dummy-poster från AdventureWorks2014 databas.

Koden nedan skapar en tabell:

  CREATE TABLE "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), 
	"EmailPromotion" NUMBER(*,0), 
	"AddressLine1" NVARCHAR2(60), 
	"AddressLine2" NVARCHAR2(60), 
	"City" NVARCHAR2(30), 
	"StateProvinceName" NVARCHAR2(50), 
	"PostalCode" NVARCHAR2(15), 
	"CountryRegionName" NVARCHAR2(50)
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS" ) ;

För att ansluta Oracle-databasen med SSDT måste vi installera Oracle-klientprogramvaran. SQL Server-dataverktyg fungerar i 32-bitarsläge och därför bör 32-bitarsversionen av ODBC-drivrutiner för Oracle installeras. Du kan ladda ner Oracle Client härifrån.

Jag har skapat en Excel-fil som heter 'HRData.xls ’ som har två kalkylblad som heter Australien och Kanada . Data kommer att delas upp baserat på värdet för CountryRegionName kolumn. Om kolumnvärdet för CountryRegionName kolumnen är Kanada sedan kommer den att lagras i Kanada kalkylblad och om kolumnvärdet för CountryRegionName är Australien sedan kommer den att lagras i Australien arbetsblad.

Eftersom vi alla vet hur man skapar ett SSIS-paket kommer jag att förklara direkt hur man skapar en dataflödesuppgift.

Skapa dataflödesuppgift

I uppgiften Dataflöde kommer vi att använda följande tre komponenter:

  1. ADO.NET-källa för att fylla i data från Oracle-databasen.
  2. Villkorlig uppdelning för att dela upp data i flera uppsättningar.
  3. Excel-destination med två arbetsböcker som heter "Australien" och "Kanada".

Konfigurera ADO.NET-källa

Dra och släpp ADO.NET-källa från SSIS Toolbox till Dataflödet windows och namnge det Anställda Data som visas i följande bild:

Dubbelklicka på Anställda data . ADO.NET Source Editor dialogrutan öppnas. Här har vi inte skapat någon anslutning ännu, därav ADO.NET-anslutningshanteraren rullgardinsmenyn är tom. Vi kommer att skapa en ny koppling. För att göra det klickar du på Ny i den dialogrutan. Efter detta kommer en annan dialogruta,Konfigurera anslutningshanteraren, öppnas som visas i bilden nedan:

I Konfigurera ADO.NET Connection Manager i dialogrutan klickar du på Ny . En annan dialogruta, Anslutningshanteraren , öppnas.

Som standard är .Net Providers\SQLClient Data Provider kommer att väljas i Provider rullgardinsmenyn. När vi fyller på data från Oracle-databasen kommer vi att välja OracleClient Data Provider .

I Servernamn textrutan, ange namn eller IP-adress för servern som Oracle 11g är installerad på. Användarnamn och lösenord kommer att användas för att ansluta Oracle-databasen. Jag hade installerat Oracle på min lokala virtuella dator, så servernamnet blir localhost . Jag ska ansluta databasen med HR användaren, därför blir användarnamnet HR . Angav lämpligt lösenord och klicka på OK . Se följande bild:

När konfigurationen är klar klickar du på Testa anslutning för att verifiera anslutningen till databasen och klicka på OK.

Vi har konfigurerat ADO.NET-anslutningshanteraren och därför kommer standardanslutningshanteraren att väljas automatiskt i ADO.NET Connection Manager listrutan. Vi kommer att hämta data från tabellen och välj därför Tabell eller Visa i rullgardinsmenyn för dataåtkomstläge. Jag har redan skapat EMPLOYEESDATA tabellen i HR Schema för Oracle-databasen, välj därför HR.EmployeesData i Namnet på tabellen eller vyn rullgardinsmenyn som visas i bilden nedan:

Konfigurera villkorlig uppdelning

Nu, för att exportera data i olika kalkylblad i Excel baserat på ett villkor, kommer vi att använda den villkorliga delade transformationen. Dra den villkorliga delade komponenten från SSIS verktygslådan tillDataflödet fönster som visas i bilden nedan.

Jag nämnde tidigare, utdata frånHR.EmployeeData Tabell kommer att exporteras i flera kalkylblad baserat på villkoret som definieras i Villkorlig uppdelning komponent.

Först kommer vi att koppla ADO.Net-källan till Conditional split transformation. För att göra det klickar du på den blå pilen på dataflödesvägen längst ned på Anställda data komponent och dra den till villkorlig delad transformation som visas i bilden nedan.

Nu kommer vi att konfigurera villkorlig delad transformation. Som jag nämnde tidigare kommer vi att dela upp data från tabellen HR.EmployeesData baserat på värdet för CountryRegionName kolumn och lagra dem i olika kalkylblad.

Du gör detta genom att dubbelklicka på Conditional Split Transformation Editor . Redigeraren Conditional Split Transformation dialogrutan öppnas som visas i följande bild:

Som du kan se i bilden ovan har redigeraren för villkorlig delad transformation tre sektioner som bestämmer hur data ska dirigeras till nästa komponenter.

Avsnitt A :I det här avsnittet, under Kolumner mapplista med utdatakolumner, härledda från ADO.Net-källkomponenten kommer att listas som kan användas för att definiera villkor för att dela upp data.

Avsnitt B :I det här avsnittet kommer olika funktioner att listas som kan användas för att konvertera utdata i olika format och användas för att definiera villkor för att dela data.

Avsnitt C :I det här avsnittet kan du skapa ett villkor som kan dela upp utdata från ADO.Net-källan i flera resultatuppsättningar.

Vi lägger till villkoret i avsnitt-C. Så först expandera kolumnnoden och dra CountryRegionName kolumn (avsnitt A) och släpp den i rutnätet (avsnitt C) som visas i följande bild:

För det här exemplet kommer vi att definiera vårt villkor baserat på CountryRegionName kolumn. Lista över anställda från "Kanada" kommer att lagras i Excel-kalkylbladet med namnet Kanada och en lista över anställda från Australien kommer att lagras i Australien arbetsblad. Baserat på villkoret kommer vi att använda lika med (==) operatör. Ekvationen kommer att vara följande:

[CountryRegionName]=="Australia"
[CountryRegionName]=="Canada"

När villkoren har definierats klickar du på OK för att spara och stänga dialogrutan.

Konfigurera Excel-destination

Nu när vi har delat dataflöde i flera vägar, kommer vi att lägga till en destination för varje väg. Eftersom vi ska exportera tabelldata i olika Excel-kalkylblad måste vi skapa två Excel-destinationer. För att göra det, dra och släpp Excel-anslutningen från SSIS Toolbox, som visas i bilden nedan:

För att konfigurera Excel-destination, dubbelklicka på Excel-destination. Excel-anslutningshanteraren dialogrutan öppnas. Klicka på Ny i den dialogrutan som visas i följande bild:

En annan dialogruta som heter Excel Connection Manager kommer öppna. I den här dialogrutan kommer vi att tillhandahålla en sökväg där Excel-filen finns. Jag har skapat medarbetardata fil på mitt skrivbord. Vi går igenom filsystemet och väljer filen och klickar på OK som visas i bilden nedan:

Nu, i Dataåtkomstläge rullgardinsmenyn väljer du Tabell eller vy och i Excel-arkets namn rullgardinsmenyn, välj Australien$, som visas i bilden nedan:

Nu ska jag konfigurera datasökvägen. För att göra det drar du den blå datavägpilen från den villkorliga delade transformationen tillAustraliens anställda excel destinationskomponent. När du ansluter datasökvägen till Excel-destinationen, kommer en dialogruta att visas för att välja utmatning som vi vill rikta mot den valda destinationen. Dialogrutan kommer att se ut som följande:

Dialogrutan innehåller alla utgångar i rullgardinsmenyn, som är tillgänglig från villkorlig delad transformation. I det här fallet kommer rullgardinslistan att innehålla två alternativ.

  1. Australien
  2. Kanada
  3. Standardutgång

Dubbelklicka på excel-destinationskomponenten för att mappa tabellkolumnerna med Excel-kolumnerna. För att göra det, dubbelklicka på Excel-destinationskomponenten och i Excel Destination Editor i dialogrutan väljer du Mappning alternativ som finns i den vänstra rutan i dialogrutan, som visas i bilden nedan:

I bilden ovan,Inmatningskolumn är kolumnnamnet på Oracle-tabellen och Destinationskolumnen kommer att vara kolumnnamnet på Excel-arket. I denna demo är kolumnnamnet på tabellen och Excel-filen desamma. Så Excel Destination Editor kommer automatiskt att mappa in- och utmatningskolumner.

På samma sätt kommer jag att upprepa dataflödeskonfigurationsprocessen för Kanada datasökväg.

  1. Vi måste välja Kanada i Input Output Selection dialogrutan, som visas i bilden nedan.
  2. I Excel Destination Edito r, välj Canada$ i Excel-arkets namn rullgardinsmenyn som visas i bilden nedan.

När alla konfigurationer är klara kommer hela dataflödesuppgiften att se ut så här:

Testar SSIS-paketet

Låt oss nu köra paketet och se hur det fungerade. För att göra det klickar du på Start knappen på menyraden. Om paketet slutför körningen framgångsrikt bör det se ut så här:

Som bilden ovan visar, infogade paketet 1 post iAustralienregionen kalkylblad och 2 poster i Kanada-regionen arbetsblad.

Sammanfattning

I den här artikeln skapade vi ett SSIS-paket med ett enda dataflöde. Vi lade till en Conditional Split-transformation till dataflödet för att dela upp data i flera vägar. Vi dirigerade sedan var och en av dessa datavägar till olika Excel-kalkylblad.

Referenser :

Exportera SQL-data till flera arbetsböcker i en excel-fil.

Användbara verktyg:

Devart SSIS Data Flow Components – låter dig integrera databas- och molndata via SQL Server Integration Services.

Devart ODBC-drivrutiner – tillhandahåller högpresterande och funktionsrika anslutningslösningar för ODBC-baserade applikationer.


  1. SQLite UTOM Operatör

  2. EXP() Exempel i SQL Server

  3. En översikt över genererade kolumner för PostgreSQL

  4. Överför array av ints till T-SQL lagrad proc via entity framework