sql >> Databasteknik >  >> RDS >> Mysql

Villkorlig delad transformation:Exportera data från SQL Server till Oracle- och MySQL-databaser

I den här artikeln har jag förklarat hur vi kan dela upp och exportera data från SQL Server-databastabellen till Oracle- och MySQL-databaser. Den processen är baserad på villkoret som definieras i SSIS som "villkorlig delad transformation ”. Villkorlig delad transformation är som case statement för vilket programmeringsspråk som helst. Med hjälp av villkorlig kan vi omdirigera utdata från en komponent till flera destinationer som är baserad på ett villkor som definieras i den villkorliga delade komponenten.

Demoinställningar

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

Jag kommer att exportera data från kundtabellen för "AdventureWorks2014 ” databas till Oracle och MySQL baserat på villkoret definierat i villkorsdelning. Data kommer att delas på basen av "StateProvinceName " kolumnen i "Kunder ” tabell. Poster som har värdet "Kalifornien " i "StateProvinceName kolumnen " kommer att exporteras till Oracle-databas och poster som har värdet "Washington ” kommer att exporteras till MySQL-databasen.

Jag har installerat Oracle 11g express edition och MySQL 8.0 på min lokala dator. Jag har skapat XE-databas i Oracle och "WideWorldImportors ” databas på MySQL-servern. Jag har skapat "Kund ” tabell på båda databaserna. Nedan finns SQL-koden för att skapa en tabell.

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) 
  )

Medan vi använder dataflödeskomponenten i SQL Server-dataverktyg kan vi överföra data mellan olika databaser genom att konfigurera ODBC-drivrutiner. SQL Server-dataverktygen som vi kan installera av anslutningshanteraren stöder redan Oracle Client, men för MySQL måste vi skapa en ODBC-datakälla.

SQL Server-dataverktyg är en 32-bitars applikation och den körs i 32-bitarsläge. Därför måste vi ladda ner 32-bitars ODBC-drivrutinen för MySQL. Se bilden nedan för referens:

Vi måste installera "Connector/ODBC 8.0.11 ” för att ansluta MySQL-databasen med ODBC-drivrutinen. ODBC 8.0.11-drivrutinen är tillgänglig för 64-bitars OS-plattform. Därför måste vi använda en äldre version av ODBC-drivrutiner. Se bilden nedan:

Istället för att använda anslutningsdrivrutiner från MySQL har jag använt ODBC-drivrutin för MySQL utvecklad av Devart.

Devart ODBC Driver for MySQL är en kraftfull och högpresterande anslutningsdrivrutin. Det är plattformsoberoende, lätt att konfigurera och stöder tredjepartsverktyg för MySQL-databasanslutning. Nedan finns funktionerna.

  1. Stöder SSL och SSH säker anslutning.
  2. Kompatibel med alla versioner av MySQL. Den stöder MariaDB, Azure-databas för MySQL och Amazon Aurora.
  3. Kompatibel med många analysverktyg från tredje part.
  4. Plattformsoberoende. Den stöder både 32-bitars och 64-bitars OS-plattformar och många fler.

Du kan ladda ner 30 dagars testversion av ODBC Driver for MySQL här . Se följande bild för referens:

När drivrutinerna har laddats ned installerar du dem genom att köra installationen.

När drivrutinerna väl har installerats måste vi konfigurera ODBC-datakällan för att ansluta MySQL-databasen. För att göra det, Öppna ODBC-datakällor (32-bitars). Den finns på Kontrollpanelen>> Administrativa verktyg>> ODBC-datakällor. Se bilden nedan för referens:

Öppna ODBC-datakällor (32-bitars). Dialogrutan "ODBC Data Source Administrator (32-bitars) " kommer öppna. Klicka på "Lägg till i den dialogrutan ”. En annan dialogruta "Skapa ny datakälla ” som har alla ODBC-drivrutiner installerade i datorn öppnas. Från den listan väljer du "Devart ODBC Driver for MySQL ” och klicka på ”Slutför ”. Se följande bild för referens:

När du klickar på "Slutför ” öppnas en dialogruta för att konfigurera MySQL-anslutningsparametrar. I den dialogrutan kan du definiera anslutningsparametrarna. Ange namn och beskrivning för att känna igen datakällan i lämpliga fält. I "Server ” textruta ange namnet på värdnamnet eller IP-adressen till datorn/servern där MySQL är installerat. Ange lämpligt användarnamn och lösenord för att logga in på servern och välja databasen. Se följande bild för referens:

Jag har installerat MySQL på min lokala maskin, därför har jag tillhandahållit "localhost" som servertextruta. Jag ansluter till servern med "root"-användare, därför är användaren "root." Helst är det inte att föredra. Istället för root, skapa en annan användare och använd den för att autentisera MySQL-databas. Jag har skapat "WideWorldImportors ” databas på MySQL databasserver, därför har jag tillhandahållit ”WideWorldImportors ” i rullgardinsmenyn för databasen.

På samma sätt måste vi installera Oracle-klientprogramvara för att ansluta Oracle-databas med hjälp av SSDT. SQL Server-dataverktyg fungerar i 32-bitarsläge och därför måste 32-bitarsversionen av ODBC-drivrutiner för Oracle installeras. Du kan ladda ner Oracle Client härifrån.

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

Skapa dataflödesuppgift

I Dataflödesuppgiften kommer vi att använda fyra komponenter:

  1. ADO.NET-källa för att fylla i data från SQL Server-databasen.
  2. Villkorlig uppdelning för att dela upp data i flera uppsättningar.
  3. Konfigurera MySQL-destination och Oracle-destination
  4. Konfigurera datasökväg för att lagra utdata från villkorlig uppdelning till relevanta databaser.

Konfigurera ADO.NET-källa

Dra och släpp "ADO.NET-källa ” från SSIS Toolbox till ”Dataflöde "-fönster och namnge det "Försäljningsdata ” som visas i följande bild:

Dubbelklicka på Försäljningsdata ”. Dialogrutan "ADO.NET Source Editor " kommer öppna. Eftersom anslutningshanteraren inte har skapats ännu, därför "ADO.NET-anslutningshanteraren ” rullgardinsmenyn är tom. För att skapa en ny anslutning i den dialogrutan, klicka på "Ny ”. En annan dialogruta "Konfigurera anslutningshanteraren ” öppnas som visas på bilden nedan:

I "Konfigurera ADO.NET Connection Manager " dialogrutan klickar du på "Ny " för att öppna "Anslutningshanteraren ” dialogrutan.

I "Servernamn ” textrutan, ange namn eller IP-adress för servern där SQL Server har installerats. SQL Server är installerad på min lokala dator, därför har jag tillhandahållit "localhost\SQL2016 ” som servernamnstextruta. I rullgardinsmenyn Autentisering väljer du den typ av autentisering som används för att ansluta till SQL Instance. Jag autentiserar till SQL-server genom att använda Windows-autentisering, därför har jag valt Windows-autentisering i rullgardinsmenyn. Och slutligen, i rullgardinsmenyn för databas, välj namnet på databasen där tabellen är lagrad. Jag exporterar data från "AdventureWorks2014 " databas, därför har jag valt den i "Databasnamn ” rullgardinsmenyn. Titta på 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 " falla ner. För att hämta data från en tabell, välj "Tabell eller Visa ” i rullgardinsmenyn för dataåtkomstläge. När du väljer alternativet "Tabell eller vy" i rullgardinsmenyn, kommer en lista över alla tabeller som skapats i databasen. Från den listan väljer du "Kunder ”-tabell som visas i följande bild:

Konfigurera villkorlig uppdelning

Nu kommer vi att använda den villkorade delade transformationen för att exportera data i olika kalkylblad av excel baserat på villkor. Dra den villkorliga delade komponenten från SSIS-verktygslådan till Data Flow-fönstret och byt namn på den till "Datafilter " som visas på bilden nedan:

Jag nämnde tidigare, utdata från "Kunder"-tabellen kommer att exporteras till flera Oracle- och MySQL-databaser baserat på villkoret som definieras i "Villkorlig uppdelning ”-komponent.

Anslut först ADO.Net-källan till Conditional split transformation. För att göra det klickar du på den blå pilen på dataflödesvägen under "Kunders SQL DB ”-komponenten och dra den till villkorlig delad transformation som visas på bilden nedan:

För att konfigurera villkorlig split, dubbelklicka på "Conditional Split Transformation Editor". En dialogruta "Conditional Split Transformation Editor ” öppnas som visas i följande bild:

För att tillämpa ett villkor för "StateProvinceName " kolumnen, expandera först kolumnnoden, dra "StateProvinceName ” kolumnen (avsnitt 1), och släpp den i rutnätet (avsnitt 3). Villkoret för datafiltrering finns i kolumnen "StateProvinceName". Poster som har värdet "California ” kommer att exporteras till Oracle-databas och poster som har värdet ”Washington ” kommer att exporteras till MySQL-databasen. Baserat på villkoret kommer vi att använda lika med (==) operatör. Ekvationen är enligt nedan:

[Cust_State]=="California"

[Cust_State]=="Washington"

Titta på följande bild:

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

Konfigurera MySQL-destination

För att exportera data från SQL Server till MySQL och Oracle måste vi därför konfigurera två destinationer. Konfigurera först MySQL-destinationen. För att göra det, dra och släpp ODBC-destination från SSIS-verktygslådan och byt namn på den till "MySQL Database" som visas i bilden nedan:

Dubbelklicka på MySQL Database (ODBC Connection) destination. En dialogruta "ODBC Destination" öppnas. Klicka på "Ny" i den dialogrutan. En annan dialogruta "Konfigurera ODBC Connection Manager" öppnas, som visas i följande bild:

En annan dialogruta "Anslutningshanterare " kommer öppna. I dialogrutan, lista över DSN skapade på maskinen som är ifylld i "Använd användar- eller systemdatakällans namn ” rullgardinsmenyn. Eftersom vi redan har konfigurerat ODBC DSN, välj "MySQL Destination ” från rullgardinsmenyn som visas i bilden nedan:

Klicka på Testa anslutning " för att verifiera att anslutningen har upprättats och klicka på "OK".

Nu i "ODBC-destination ” i dialogrutan, välj tabellnamn från ”Namn på tabellen eller vyn ” rullgardinsmenyn som visas i följande bild:

När MySQL-databasdestinationen har konfigurerats framgångsrikt, konfigurera Oracle-databasdestinationen.

Konfigurera Oracle-destination

För att konfigurera Oracle-destination, dra och släpp "ADO.NET Destination" till dataflödesfönstret och byt namn på det till "Oracle Database" som visas på följande bild:

Dubbelklicka på Oracle Database (ADO.NET destination). En dialogruta "ADO.NET Destination Editor " kommer öppna. Klicka på "Ny i dialogrutan ”. En annan dialogruta "Konfigurera ADO.NET Connection Manager" öppnas som visas i följande bild:

På "Konfigurera ADO.NET Connection Manager " dialogrutan klickar du på "Ny ”. En annan dialogruta "Anslutningshanteraren" öppnas. För att konfigurera Oracle-databasanslutning måste vi välja "Net.Provider\OracleClient " i "Provider " dialog ruta. Ange värdnamn eller IP-adress för Oracle-databasservern i textrutan "Servernamn". Ange användarnamn och lösenord för att ansluta Oracle-databasinstansen. Som jag nämnde har jag installerat Oracle-instans som min lokala maskin, därför har jag angett "localhost" i servernamnstextrutan. Jag har anslutit Oracle-databas med hjälp av "Sales"-användare, därför har jag i textrutan "Användarnamn" angett "Försäljning" som användarnamn och angett lösenordet för det. Titta på följande bild:

För att verifiera att anslutningen har upprättats, klicka på Testa anslutning " och när anslutningen har upprättats klickar du på "OK ” för att stänga dialogrutan.

Nu på "ADO.NET destination editor ” dialogrutan, välj tabell- eller vynamn där data ska sparas. Jag exporterar data till kundtabellen, därför har jag valt "Sälj.Kund ”-tabell som visas i följande bild:

Konfigurera datasökväg

När båda destinationerna är konfigurerade konfigurerar du datasökvägen för att överföra data i respektive databaser. För att göra det, dra den blå datavägpilen under villkorlig delad transformation och släpp den på ODBC Destination (MySQL Destination). När datasökvägen ansluter till ODBC-destinationen visas en dialogruta. Välj destinationen från Utdata ” rullgardinsmenyn för att styra data som hämtas från SQL Query. Dialogrutan ser ut som bilden nedan:

Listrutan är fylld med alla villkor som definieras i villkorlig delad transformation. I det här fallet innehåller en rullgardinsmeny tre alternativ.

  1. MySQL-utgång
  2. Oracle-utgång
  3. Standardutgång

Som nämnts ovan, poster som har värdet "Washington ” i kolumnen ”StateProvinceName” kommer att exporteras till MySQL-databasen och välj därför MySQL-utgång.

Kartlägg nu utdatakolumnerna för villkorlig transformation med kunders tabell i MySQL-databasen. För att göra det, dubbelklicka på "MySQL-databas ” (ODBC-destination) och i dialogrutan ”ODBC-destination”, välj ”Mapping ” alternativ som finns i den vänstra rutan i dialogrutan som visas i bilden nedan:

I bilden ovan är "Indatakolumner" kolumnnamnet på SQL Server-tabellen och destinationskolumnen kommer att vara kolumnnamnet för "Kunder"-tabellen i MySQL-arket. I den här demonstrationen är kolumnnamnet för SQL-tabellen och MySQL-tabellerna detsamma så dess inmatnings- och utdatakolumner mappas automatiskt.

Upprepa dataflödeskonfigurationsprocessen för "Oracle Output"-datavägen på samma sätt. Nedan är ändringarna.

  1. Vi måste välja "Oracle Output" i dialogrutan för val av input-output som visas i bilden nedan:
  2. Verifiera i "ADO.NET Destination Editor" att mappningarna av input/output-kolumnerna är korrekta som visas i bilden nedan:

När alla konfigurationer är klara ser hela dataflödesuppgiften ut som bilden nedan:

Testar SSIS-paketet

Kör nu paketet genom att klicka på "Start"-knappen i menyraden. Om paketet slutför sin körning framgångsrikt bör det se ut som bilden nedan:

Paketet har delat upp SQL-data genom att använda villkorlig uppdelning och exporterade 4 445 poster i MySQL-databasen och 2 285 poster i Oracle-databasen.

Sammanfattning

I den här artikeln konfigurerade vi ODBC-anslutningen för MySQL, skapade ett SSIS-paket med ett dataflöde. Vi använde Conditional Split Transformation för att dela upp resultatet, hämtat från SQL-serverdatabasen och exportera det i Oracle- och MySQL-databaser.

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. Ett sätt att få en indexsökning för ett ledande %jokertecken

  2. Inaktivera och senare aktivera alla tabellindex i Oracle

  3. IRI produktnomenklatur och arkitektur

  4. Hämta tecknet mellan de två första specialtecknen i SQL