sql >> Database teknologi >  >> RDS >> Mysql

Betinget splittransformation:Eksporter data fra SQL Server til Oracle- og MySQL-databaser

I denne artikel har jeg forklaret, hvordan vi kan opdele og eksportere data fra SQL Server-databasetabellen til Oracle- og MySQL-databaser. Denne proces er baseret på betingelsen defineret i SSIS som "betinget split transformation ”. Betinget opdelt transformation er som kasussætning af et hvilket som helst programmeringssprog. Ved at bruge betinget kan vi omdirigere outputtet fra en komponent til flere destinationer, der er baseret på en betingelse defineret i den betingede opdelte komponent.

Demoopsætning

Vi kan hente data fra forskellige databaseplatforme ved at bruge ODBC-forbindelse, mens vi bruger SQL Server-dataværktøjer. De fleste af databaseplatformene leverer deres tilslutningsdrivere, der kan bruges til at konfigurere forbindelsen mellem applikation og database.

Jeg vil eksportere data fra kundetabellen i "AdventureWorks2014 ” database til Oracle og MySQL baseret på betingelsen defineret i betingelsesdeling. Data vil blive opdelt på basis af "StateProvinceName " kolonne af "Kunder " bord. Registreringer, der har værdien kaldet "California " i "StateProvinceName kolonnen eksporteres til Oracle-databasen og poster, der har værdien kaldet "Washington ” vil blive eksporteret til MySQL-databasen.

Jeg har installeret Oracle 11g express edition og MySQL 8.0 på min lokale maskine. Jeg har oprettet XE-database i Oracle og "WideWorldImportors ”-database på MySQL-serveren. Jeg har oprettet "Kunde ” tabel på begge databaser. Nedenfor er SQL-koden til at oprette en tabel.

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

Mens vi bruger dataflowkomponenten i SQL Server-dataværktøjer, kan vi overføre data mellem forskellige databaser ved at konfigurere ODBC-drivere. SQL Server-dataværktøjerne, som vi kan installere af forbindelsesadministratoren, understøtter allerede Oracle Client, men for MySQL skal vi oprette en ODBC-datakilde.

SQL Server-dataværktøjer er en 32-bit applikation, og den kører i 32-bit tilstand. Derfor er vi nødt til at downloade 32-bit ODBC-driveren til MySQL. Se billedet nedenfor for reference:

Vi skal installere "Connector/ODBC 8.0.11 ” for at forbinde MySQL-database ved hjælp af ODBC-driver. ODBC 8.0.11 driver er tilgængelig til 64-bit OS platform. Derfor er vi nødt til at bruge en ældre version af ODBC-drivere. Se billedet nedenfor:

I stedet for at bruge tilslutningsdrivere leveret af MySQL, har jeg brugt ODBC-driver til MySQL udviklet af Devart.

Devart ODBC Driver til MySQL er en kraftfuld og højtydende tilslutningsdriver. Det er platformsuafhængigt, nemt at konfigurere og understøtter tredjepartsværktøjer til MySQL-databaseforbindelse. Nedenfor er funktionerne.

  1. Understøtter SSL og SSH sikker forbindelse.
  2. Skompatibel med alle versioner af MySQL. Det understøtter MariaDB, Azure-database til MySQL og Amazon Aurora.
  3. Kompatibel med mange tredjepartsanalyseværktøjer.
  4. Platformuafhængig. Den understøtter både 32-bit og 64-bit OS-platforme og mange flere.

Du kan downloade 30 dages prøveversion af ODBC Driver til MySQL her . Se følgende billede for reference:

Når driverne er downloadet, skal du installere dem ved at køre opsætningen.

Når driverne er installeret, skal vi konfigurere ODBC-datakilden til at forbinde MySQL-databasen. For at gøre det skal du åbne ODBC-datakilder (32-bit). Det er placeret på Kontrolpanel>> Administrative værktøjer>> ODBC-datakilder. Se billedet nedenfor for reference:

Åbn ODBC-datakilder (32-bit). Dialogboksen "ODBC Data Source Administrator (32-Bit) ” vil åbne. Klik på "Tilføj i den dialogboks ”. En anden dialogboks "Opret ny datakilde ”, der har alle ODBC-drivere installeret på computeren, åbnes. Fra denne liste skal du vælge "Devart ODBC Driver for MySQL ” og klik på “Udfør ”. Se følgende billede for reference:

Når du klikker på "Udfør ”, åbnes en dialogboks til at konfigurere MySQL-forbindelsesparametre. I den dialogboks kan du definere forbindelsesparametrene. Angiv navn og beskrivelse for at genkende datakilden i de relevante felter. I "Server ” tekstboks angive navnet på værtsnavnet eller IP-adressen på den computer/server, hvor MySQL er installeret. Angiv passende brugernavn og adgangskode for at logge ind på serveren og vælge databasen. Se følgende billede for reference:

Jeg har installeret MySQL på min lokale maskine, derfor har jeg givet "localhost" som servertekstboks. Jeg opretter forbindelse til serveren af ​​"root" bruger, derfor er brugeren "root." Ideelt set er det ikke at foretrække. I stedet for root skal du oprette en anden bruger og bruge den til at godkende MySQL-databasen. Jeg har oprettet "WideWorldImportors ”-database på MySQL-databaseserver, derfor har jeg leveret “WideWorldImportors ” i database rullemenuen.

Tilsvarende skal vi installere Oracle-klientsoftware for at forbinde Oracle-database ved hjælp af SSDT. SQL Server-dataværktøjer fungerer i 32-bit-tilstand, og derfor skal 32-bit-versionen af ​​ODBC-drivere til Oracle være installeret. Du kan downloade Oracle Client herfra.

Da vi alle ved, hvordan man opretter en SSIS-pakke, vil jeg direkte forklare, hvordan man opretter dataflowopgaven.

Opret dataflowopgave

I Dataflow-opgaven skal vi bruge fire komponenter:

  1. ADO.NET-kilde til at udfylde data fra SQL Server-databasen.
  2. Betinget opdeling for at opdele data i flere sæt.
  3. Konfigurer MySQL-destination og Oracle-destination
  4. Konfigurer datasti til at gemme output fra betinget opdeling til relevante databaser.

Konfigurer ADO.NET-kilde

Træk og slip "ADO.NET-kilde ” fra SSIS Toolbox til “Dataflow " vinduer og navngive det "Salgsdata ” som vist i følgende billede:

Dobbeltklik på "Salgsdata ”. Dialogboksen "ADO.NET Source Editor ” vil åbne. Da forbindelsesadministrator ikke er oprettet endnu, derfor "ADO.NET forbindelsesadministrator ” rullemenuen er tom. For at oprette en ny forbindelse i den dialogboks skal du klikke på "Ny ”. En anden dialogboks "Konfigurer forbindelsesadministrator ” åbnes som vist på billedet nedenfor:

I "Konfigurer ADO.NET Connection Manager ” dialogboksen, klik på “Ny ” for at åbne “Forbindelseshåndtering ” dialogboksen.

I "Servernavn ” tekstboks, indtast navn eller IP-adresse på serveren, hvor SQL Server er installeret. SQL Server er installeret på min lokale maskine, derfor har jeg leveret "localhost\SQL2016 ” som servernavn tekstboks. I rullemenuen Godkendelse skal du vælge den type godkendelse, der bruges til at oprette forbindelse til SQL Instance. Jeg godkender til SQL-server ved at bruge Windows-godkendelse, derfor har jeg valgt Windows-godkendelse i rullemenuen. Og til sidst, i database drop-down boksen, vælg navnet på den database, hvor tabellen er gemt. Jeg eksporterer data fra "AdventureWorks2014 ”-database, derfor har jeg valgt den i “Databasenavn ” rullemenu. Se på følgende billede:

Når konfigurationen er fuldført, skal du klikke på "Test forbindelse ” for at bekræfte forbindelsen til databasen og klik på “OK”.

Vi har konfigureret ADO.NET Connection Manager, og derfor vælges standardforbindelsesadministrator automatisk i "ADO.NET Connection Manager " drop down. For at hente data fra en tabel skal du vælge "Tabel eller Vis ” i rullemenuen til dataadgangstilstand. Når du vælger "Tabel eller visning" i rullemenuen, bringer den en liste over alle tabeller, der er oprettet i databasen. Fra denne liste skal du vælge "Kunder ” tabel som vist i følgende billede:

Konfigurer betinget opdeling

Nu vil vi bruge den betingede split-transformation til at eksportere data i forskellige Excel-regneark baseret på betingelse. Træk den betingede opdelte komponent fra SSIS-værktøjskassen til Data Flow-vinduet, og omdøb den til "Datafilter ” som vist på billedet nedenfor:

Jeg nævnte tidligere, output af data fra "Kunder"-tabellen vil blive eksporteret i flere Oracle- og MySQL-databaser baseret på betingelsen defineret i "Betinget opdeling ”-komponent.

For det første skal du forbinde ADO.Net-kilden til Conditional split transformation. For at gøre det skal du klikke på den blå pil på dataflowstien under "Kunder SQL DB ”-komponent og træk den til betinget opdelt transformation som vist på billedet nedenfor:

For at konfigurere betinget opdeling skal du dobbeltklikke på "Betinget opdelingstransformationseditor". En dialogboks "Betinget Split Transformation Editor ” åbnes som vist i følgende billede:

For at anvende en betingelse for "StateProvinceName ”-kolonnen, skal du først udvide kolonnenoden, trække “StateProvinceName ”-kolonnen (afsnit 1), og slip den i gitteret (afsnit 3). Datafiltreringsbetingelsen er i kolonnen "StateProvinceName". Registreringer, der har værdien "California " vil blive eksporteret til Oracle-databasen og poster, der har en værdi "Washington " vil blive eksporteret til MySQL-databasen. Baseret på betingelsen vil vi bruge lig med (==) operatør. Ligningen er som nedenfor:

[Cust_State]=="California"

[Cust_State]=="Washington"

Se på følgende billede:

Når betingelserne er defineret, skal du klikke på "OK" for at gemme og lukke dialogboksen.

Konfigurer MySQL-destination

For at eksportere data fra SQL Server til MySQL og Oracle skal vi derfor konfigurere to destinationer. Først skal du konfigurere MySQL-destinationen. For at gøre det skal du trække og slippe ODBC-destination fra SSIS-værktøjskassen og omdøbe den til "MySQL-database" som vist på billedet nedenfor:

Dobbeltklik på MySQL Database (ODBC Connection) destination. En dialogboks "ODBC-destination" åbnes. I den dialogboks skal du klikke på "Ny". En anden dialogboks "Konfigurer ODBC Connection Manager" åbnes, som vist på følgende billede:

En anden dialogboks "Forbindelseshåndtering ” vil åbne. I dialogboksen, liste over DSN'er oprettet på maskinen, der er udfyldt "Brug bruger- eller systemdatakildenavn ” rullemenu. Da vi allerede har konfigureret ODBC DSN, skal du vælge "MySQL-destination ” fra rullelisten som vist på billedet nedenfor:

Klik på "Test forbindelse ” for at bekræfte, at forbindelsen er blevet etableret, og klik på “OK”.

Nu i "ODBC-destination ” dialogboksen, vælg tabelnavn fra “Navn på tabellen eller visningen ” rullemenu som vist i følgende billede:

Når MySQL-databasedestinationen er konfigureret, skal du konfigurere Oracle-databasedestinationen.

Konfigurer Oracle-destination

For at konfigurere Oracle-destination skal du trække og slippe "ADO.NET Destination" til dataflowvinduet og omdøbe det til "Oracle Database" som vist på følgende billede:

Dobbeltklik på Oracle Database (ADO.NET destination). En dialogboks "ADO.NET Destination Editor ” vil åbne. Klik på "Ny i dialogboksen ”. En anden dialogboks "Konfigurer ADO.NET Connection Manager" åbnes som vist i følgende billede:

På "Konfigurer ADO.NET Connection Manager ” dialogboksen, klik på “Ny ”. En anden dialogboks "Connection Manager" åbnes. For at konfigurere Oracle-databaseforbindelse skal vi vælge "Net.Provider\OracleClient " i "Udbyder " dialog boks. Angiv værtsnavn eller IP-adresse på Oracle-databaseserveren i tekstboksen "Servernavn". Angiv brugernavn og adgangskode for at forbinde Oracle-databaseinstansen. Som jeg nævnte, har jeg installeret Oracle-instans som min lokale maskine, derfor har jeg angivet "localhost" i servernavnstekstboksen. Jeg har tilsluttet oracle-database ved hjælp af "Salg"-bruger, derfor har jeg i "Brugernavn" tekstboksen indtastet "Salg" som brugernavn og indtastet adgangskoden til det. Se på følgende billede:

For at bekræfte, at forbindelsen er etableret, skal du klikke på "Test forbindelse ” og når forbindelsen er etableret, klik på “OK ” for at lukke dialogboksen.

Nu på "ADO.NET destination editor ” dialogboksen, vælg tabel- eller visningsnavn, hvor data skal gemmes. Jeg eksporterer data til kundetabellen, derfor har jeg valgt "Salg.Kunde ” tabel som vist i følgende billede:

Konfigurer datasti

Når begge destinationer er konfigureret, skal du konfigurere datastien til at overføre data i de respektive databaser. For at gøre det skal du trække den blå datastipil under betinget opdelt transformation og slippe den på ODBC-destination (MySQL-destination). Når datastien forbinder til ODBC-destination, vises en dialogboks. Vælg destinationen fra "Output ” rullemenu for at dirigere de data, der hentes fra SQL Query. Dialogboksen ser ud som nedenstående billede:

Rullelisten er fyldt med alle betingelser, der er defineret i betinget opdelt transformation. I dette tilfælde indeholder en rullemenu tre muligheder.

  1. MySQL-output
  2. Oracle-output
  3. Standardoutput

Som nævnt ovenfor, poster, der har værdien "Washington ” i kolonnen “StateProvinceName” vil blive eksporteret til MySQL-databasen, og vælg derfor MySQL-output.

Kort nu outputkolonnerne for betinget transformation med kundetabellen i MySQL-databasen. For at gøre det skal du dobbeltklikke på "MySQL-database ” (ODBC-destination) og i dialogboksen “ODBC-destination” skal du vælge “Mapping ” mulighed, der er placeret i venstre rude i dialogboksen som vist på billedet nedenfor:

I ovenstående billede er "Inputkolonner" kolonnenavnet på SQL Server-tabellen, og destinationskolonnen vil være kolonnenavnet på "Kunder"-tabellen i MySQL-arket. I denne demo er kolonnenavnet på SQL-tabellen og MySQL-tabellerne det samme, så dens input- og outputkolonner kortlægges automatisk.

Gentag dataflowkonfigurationsprocessen for "Oracle Output"-datastien på samme måde. Nedenfor er ændringerne.

  1. Vi skal vælge "Oracle Output" i dialogboksen for valg af input-output som vist på billedet nedenfor:
  2. I "ADO.NET Destination Editor" skal du kontrollere, at input-output kolonnetilknytningerne er korrekte som vist på billedet nedenfor:

Når alle konfigurationer er gennemført, ser hele dataflowopgaven ud som på billedet nedenfor:

Test SSIS-pakke

Kør nu pakken ved at klikke på knappen "Start" på menulinjen. Hvis pakken fuldfører sin eksekvering med succes, skal den se ud som nedenstående billede:

Pakken har opdelt output af SQL-data ved at bruge betinget opdeling og eksporterede 4.445 poster i MySQL-databasen og 2.285 poster i Oracle-databasen.

Oversigt

I denne artikel konfigurerede vi ODBC-forbindelsen til MySQL, oprettede en SSIS-pakke med et dataflow. Vi brugte Betinget Split Transformation at opdele outputtet, hentet fra SQL-serverdatabasen og eksportere det i Oracle- og MySQL-databaser.

Nyttige værktøjer:

Devart SSIS Data Flow Components – giver dig mulighed for at integrere database- og clouddata via SQL Server Integration Services.

Devart ODBC-drivere – leverer højtydende og funktionsrige tilslutningsløsninger til ODBC-baserede applikationer.


  1. Sådan nulstiller du WordPress Admin Password via MySQL kommandoprompt

  2. Sådan fjerner du dubletter i SQL

  3. Sådan bruges NVL()-funktionen i Oracle

  4. MySQL matematiske funktioner (fuld liste)