sql >> Database >  >> RDS >> Mysql

Conditional Split Transformation:gegevens exporteren van SQL Server naar Oracle- en MySQL-databases

In dit artikel heb ik uitgelegd hoe we gegevens van de SQL Server-databasetabel kunnen verdelen en exporteren naar Oracle- en MySQL-databases. Dat proces is gebaseerd op de voorwaarde die in SSIS is gedefinieerd als "voorwaardelijke gesplitste transformatie ”. Voorwaardelijke gesplitste transformatie is als een case-statement van elke programmeertaal. Met conditioneel kunnen we de uitvoer van een component omleiden naar meerdere bestemmingen die is gebaseerd op een voorwaarde die is gedefinieerd in de conditioneel gesplitste component.

Demo instellen

We kunnen gegevens ophalen van verschillende databaseplatforms door een ODBC-verbinding te gebruiken terwijl we SQL Server-gegevenstools gebruiken. De meeste databaseplatforms bieden hun connectiviteitsstuurprogramma's die kunnen worden gebruikt om de verbinding tussen applicatie en database te configureren.

Ik ga de gegevens van de klantentabel van de "AdventureWorks2014 . exporteren ”-database naar Oracle en MySQL op basis van de voorwaarde die is gedefinieerd in de voorwaardesplitsing. Gegevens worden verdeeld op basis van de "StateProvinceName ” kolom van “Klanten " tafel. Records met de waarde 'Californië ” in “StateProvinceName ' wordt geëxporteerd naar de Oracle-database en records met de waarde 'Washington ” wordt geëxporteerd naar de MySQL-database.

Ik heb Oracle 11g express edition en MySQL 8.0 op mijn lokale computer geïnstalleerd. Ik heb een XE-database gemaakt in Oracle en "WideWorldImportors ”-database op MySQL-server. Ik heb de "Klant . gemaakt ” tabel op beide databases. Hieronder staat de SQL-code om een ​​tabel te maken.

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

Bij het gebruik van de gegevensstroomcomponent van SQL Server-gegevenshulpmiddelen, kunnen we gegevens tussen verschillende databases overbrengen door ODBC-stuurprogramma's te configureren. De SQL Server-gegevenstools die we door de verbindingsbeheerder kunnen installeren, ondersteunen Oracle Client al, maar voor MySQL moeten we een ODBC-gegevensbron maken.

SQL Server-gegevenstools is een 32-bits toepassing en wordt uitgevoerd in 32-bits modus. Daarom moeten we het 32-bits ODBC-stuurprogramma van MySQL downloaden. Zie onderstaande afbeelding ter referentie:

We moeten “Connector/ODBC 8.0.11 . installeren ” om verbinding te maken met de MySQL-database met behulp van het ODBC-stuurprogramma. Het ODBC 8.0.11-stuurprogramma is beschikbaar voor het 64-bits besturingssysteem. Daarom moeten we een oudere versie van ODBC-stuurprogramma's gebruiken. Zie onderstaande afbeelding:

In plaats van connectiviteitsstuurprogramma's van MySQL te gebruiken, heb ik ODBC-stuurprogramma voor MySQL gebruikt ontwikkeld door Devart.

Devart ODBC-stuurprogramma voor MySQL is een krachtig en krachtig connectiviteitsstuurprogramma. Het is platformonafhankelijk, eenvoudig te configureren en ondersteunt tools van derden voor MySQL-databaseverbinding. Hieronder staan ​​de functies.

  1. Ondersteunt een beveiligde SSL- en SSH-verbinding.
  2. Сcompatibel met elke versie van MySQL. Het ondersteunt MariaDB, Azure-database voor MySQL en Amazon Aurora.
  3. Compatibel met veel analysetools van derden.
  4. Platformonafhankelijk. Het ondersteunt zowel 32-bits als 64-bits OS-platforms en nog veel meer.

U kunt een proefversie van 30 dagen downloaden van ODBC Driver for MySQL hier . Zie de volgende afbeelding ter referentie:

Nadat de stuurprogramma's zijn gedownload, installeert u ze door setup uit te voeren.

Nadat de stuurprogramma's zijn geïnstalleerd, moeten we de ODBC-gegevensbron configureren om verbinding te maken met de MySQL-database. Open hiervoor ODBC-gegevensbronnen (32-bits). Het bevindt zich in het Configuratiescherm>> Systeembeheer>> ODBC-gegevensbronnen. Zie onderstaande afbeelding ter referentie:

Open ODBC-gegevensbronnen (32-bits). Het dialoogvenster "ODBC-gegevensbronbeheerder (32-bits) " zal openen. Klik in dat dialoogvenster op "Toevoegen ”. Een ander dialoogvenster "Nieuwe gegevensbron maken ” waarop alle ODBC-stuurprogramma's op de computer zijn geïnstalleerd, wordt geopend. Selecteer uit die lijst "Devart ODBC Driver for MySQL ” en klik op “Voltooien ”. Zie de volgende afbeelding ter referentie:

Zodra u klikt op "Voltooien ”, wordt een dialoogvenster geopend om MySQL-connectiviteitsparameters te configureren. In dat dialoogvenster kunt u de connectiviteitsparameters definiëren. Geef de naam en beschrijving op om de gegevensbron te herkennen in de juiste velden. In "Server ” tekstvak de naam van de hostnaam of het IP-adres van de computer/server waarop MySQL is geïnstalleerd. Geef de juiste gebruikersnaam en het juiste wachtwoord op om in te loggen op de server en selecteer de database. Zie de volgende afbeelding ter referentie:

Ik heb MySQL op mijn lokale computer geïnstalleerd en daarom heb ik "localhost" als Server-tekstvak opgegeven. Ik maak verbinding met de server door de "root" -gebruiker, vandaar dat de gebruiker "root" is. Idealiter heeft het niet de voorkeur. Maak in plaats van root een andere gebruiker en gebruik deze om de MySQL-database te verifiëren. Ik heb "WideWorldImportors . gemaakt ”-database op MySQL-databaseserver, vandaar dat ik “WideWorldImportors heb verstrekt ” in de vervolgkeuzelijst database.

Op dezelfde manier moeten we Oracle-clientsoftware installeren om de Oracle-database te verbinden met behulp van SSDT. SQL Server-gegevenshulpmiddelen werken in 32-bits modus, daarom moet de 32-bits versie van ODBC-stuurprogramma's voor Oracle worden geïnstalleerd. U kunt Oracle Client hier downloaden.

Omdat we allemaal weten hoe we een SSIS-pakket moeten maken, zal ik direct uitleggen hoe u de gegevensstroomtaak kunt maken.

Gegevensstroomtaak maken

In de gegevensstroomtaak gaan we vier componenten gebruiken:

  1. ADO.NET Source om gegevens uit de SQL Server-database in te vullen.
  2. Voorwaardelijke splitsing om gegevens in meerdere sets te verdelen.
  3. MySQL-bestemming en Oracle-bestemming configureren
  4. Configureer het gegevenspad om de uitvoer van voorwaardelijke splitsing naar relevante databases op te slaan.

ADO.NET-bron configureren

Slepen en neerzetten “ADO.NET Source ” van SSIS Toolbox naar “Gegevensstroom ” vensters en noem het “Verkoopgegevens ” zoals weergegeven in de volgende afbeelding:

Dubbelklik op "Verkoopgegevens ”. Het dialoogvenster "ADO.NET Source Editor " zal openen. Aangezien verbindingsbeheer nog niet is gemaakt, daarom "ADO.NET verbindingsbeheer vervolgkeuzelijst is leeg. Om een ​​nieuwe verbinding in dat dialoogvenster te maken, klikt u op "Nieuw ”. Een ander dialoogvenster "Verbindingsbeheer configureren ” wordt geopend zoals weergegeven op de onderstaande afbeelding:

In “ADO.NET Verbindingsbeheer configureren ” dialoogvenster, klik op “Nieuw ” om “Verbindingsbeheer . te openen ” dialoogvenster.

In "Servernaam ” tekstvak, voer de naam of het IP-adres in van de server waarop SQL Server is geïnstalleerd. SQL Server is geïnstalleerd op mijn lokale computer, daarom heb ik "localhost\SQL2016 . opgegeven ” als tekstvak voor de servernaam. Selecteer in de vervolgkeuzelijst Verificatie het type verificatie dat wordt gebruikt om verbinding te maken met SQL-instantie. Ik authenticeer bij de SQL-server met behulp van Windows-authenticatie, daarom heb ik Windows-authenticatie geselecteerd in de vervolgkeuzelijst. Selecteer ten slotte in de vervolgkeuzelijst database de naam van de database waarin de tabel is opgeslagen. Ik exporteer gegevens van de "AdventureWorks2014 ” database, vandaar dat ik deze heb geselecteerd in “Databasenaam ” vervolgkeuzelijst. Kijk naar de volgende afbeelding:

Zodra de configuratie is voltooid, klikt u op "Verbinding testen ” om de verbinding met de database te controleren en klik op “OK”.

We hebben ADO.NET-verbindingsbeheer geconfigureerd, daarom wordt standaard verbindingsbeheer automatisch geselecteerd in "ADO.NET-verbindingsbeheer " laten vallen. Om gegevens uit een tabel op te halen, selecteert u "Tabel of Weergave ” in de vervolgkeuzelijst voor gegevenstoegangsmodus. Nadat u de optie "Tabel of weergave" in de vervolgkeuzelijst hebt geselecteerd, wordt een lijst weergegeven met alle tabellen die in de database zijn gemaakt. Selecteer in die lijst 'Klanten ” tabel zoals weergegeven in de volgende afbeelding:

Voorwaardelijke splitsing configureren

Nu zullen we de voorwaardelijke gesplitste transformatie gebruiken voor het exporteren van gegevens in verschillende Excel-werkbladen op basis van voorwaarde. Sleep het voorwaardelijke gesplitste onderdeel van de SSIS-toolbox naar het Data Flow-venster en hernoem het naar "Data Filter ” zoals weergegeven op de onderstaande afbeelding:

Ik heb eerder gezegd dat de uitvoer van gegevens van de tabel "Klanten" wordt geëxporteerd naar meerdere Oracle- en MySQL-databases op basis van de voorwaarde die is gedefinieerd in "Voorwaardelijke splitsing ” component.

Verbind eerst de ADO.Net-bron met de voorwaardelijke gesplitste transformatie. Om dat te doen, klikt u op de blauwe pijl op het gegevensstroompad onder "Klanten SQL DB ” component en sleep het naar voorwaardelijke gesplitste transformatie zoals weergegeven in de onderstaande afbeelding:

Dubbelklik op "Conditional Split Transformation Editor" om voorwaardelijke splitsing te configureren. Een dialoogvenster "Conditional Split Transformation Editor ” wordt geopend zoals weergegeven in de volgende afbeelding:

Een voorwaarde toepassen op "StateProvinceName ” kolom, vouw eerst het kolomknooppunt uit, sleep de “StateProvinceName ” kolom (Sectie 1), en laat het in het raster vallen (Sectie 3). De voorwaarde voor gegevensfiltering is in de kolom "StateProvinceName". Records met de waarde 'Californië ” wordt geëxporteerd naar de Oracle-database en records met de waarde “Washington ” wordt geëxporteerd naar de MySQL-database. Op basis van de voorwaarde gaan we is gelijk aan (==) . gebruiken exploitant. De vergelijking is als volgt:

[Cust_State]=="California"

[Cust_State]=="Washington"

Kijk naar de volgende afbeelding:

Nadat de voorwaarden zijn gedefinieerd, klikt u op "OK" om het dialoogvenster op te slaan en te sluiten.

MySQL-bestemming configureren

Om gegevens van SQL Server naar MySQL en Oracle te exporteren, moeten we daarom twee bestemmingen configureren. Configureer eerst de MySQL-bestemming. Om dat te doen, sleept u de ODBC-bestemming vanuit de SSIS-toolbox en hernoemt u deze naar "MySQL-database" zoals weergegeven in de onderstaande afbeelding:

Dubbelklik op MySQL Database (ODBC Connection) bestemming. Een dialoogvenster "ODBC-bestemming" wordt geopend. Klik in dat dialoogvenster op "Nieuw". Een ander dialoogvenster "Configure ODBC Connection Manager" wordt geopend, zoals weergegeven in de volgende afbeelding:

Een ander dialoogvenster "Verbindingsbeheer " zal openen. In het dialoogvenster, lijst met DSN's die op de computer zijn gemaakt, is ingevuld met "Gebruik gebruikers- of systeemgegevensbronnaam ” vervolgkeuzelijst. Aangezien we ODBC DSN al hebben geconfigureerd, selecteert u de "MySQL-bestemming ” uit de vervolgkeuzelijst zoals weergegeven in de onderstaande afbeelding:

Klik op "Verbinding testen ” om te controleren of de verbinding tot stand is gebracht en klik op “OK”.

Nu in "ODBC-bestemming ” dialoogvenster, selecteer de tabelnaam uit “Naam van de tabel of de weergave ” drop-down box zoals getoond in de volgende afbeelding:

Nadat de MySQL-databasebestemming met succes is geconfigureerd, configureert u de Oracle-databasebestemming.

Oracle-bestemming configureren

Om de Oracle-bestemming te configureren, sleept u "ADO.NET Destination" naar het gegevensstroomvenster en hernoemt u het als "Oracle Database" zoals weergegeven in de volgende afbeelding:

Dubbelklik op Oracle Database (ADO.NET-bestemming). Een dialoogvenster "ADO.NET Destination Editor " zal openen. Klik in het dialoogvenster op "Nieuw ”. Een ander dialoogvenster "Configureer ADO.NET Connection Manager" wordt geopend zoals weergegeven in de volgende afbeelding:

Op "ADO.NET Verbindingsbeheer configureren ” dialoogvenster, klik op “Nieuw ”. Een ander dialoogvenster "Verbindingsbeheer" wordt geopend. Om Oracle-databaseconnectiviteit te configureren, moeten we "Net.Provider\OracleClient" selecteren ” in “Aanbieder " dialoog venster. Geef de hostnaam of het IP-adres van de Oracle-databaseserver op in het tekstvak "Servernaam". Geef gebruikersnaam en wachtwoord op om verbinding te maken met de Oracle-database-instantie. Zoals ik al zei, heb ik Oracle-instantie als mijn lokale machine geïnstalleerd, vandaar dat ik "localhost" heb opgegeven in het tekstvak van de servernaam. Ik heb de Oracle-database verbonden met de gebruiker "Verkoop", vandaar dat ik in het tekstvak "Gebruikersnaam" "Verkoop" heb ingevoerd als gebruikersnaam en het wachtwoord ervan heb ingevoerd. Kijk naar de volgende afbeelding:

Om te controleren of de verbinding tot stand is gebracht, klikt u op "Verbinding testen ” en zodra de verbinding tot stand is gebracht, klikt u op “OK ” om het dialoogvenster te sluiten.

Nu op "ADO.NET-bestemmingseditor ” dialoogvenster, selecteer de tabel- of weergavenaam waar de gegevens moeten worden opgeslagen. Ik exporteer gegevens naar de klantentabel, daarom heb ik "Sales.Customer . geselecteerd ” tabel zoals weergegeven in de volgende afbeelding:

Gegevenspad configureren

Nadat beide bestemmingen zijn geconfigureerd, configureert u het gegevenspad om gegevens naar de respectieve databases over te dragen. Om dat te doen, sleept u de blauwe gegevenspadpijl onder voorwaardelijke gesplitste transformatie en zet u deze neer op ODBC-bestemming (MySQL-bestemming). Wanneer het gegevenspad verbinding maakt met de ODBC-bestemming, wordt een dialoogvenster weergegeven. Selecteer de bestemming uit "Uitvoer ” vervolgkeuzelijst om de gegevens te sturen die worden opgehaald uit SQL Query. Dialoogvenster ziet eruit als de onderstaande afbeelding:

De vervolgkeuzelijst is gevuld met alle voorwaarden die zijn gedefinieerd in voorwaardelijke splitsingstransformatie. In dit geval bevat een vervolgkeuzemenu drie opties.

  1. MySQL-uitvoer
  2. Oracle-uitvoer
  3. Standaard uitvoer

Zoals hierboven vermeld, zijn records met de waarde "Washington " van de kolom "StateProvinceName" wordt geëxporteerd naar de MySQL-database, selecteer daarom MySQL-uitvoer.

Breng nu de uitvoerkolommen van voorwaardelijke transformatie in kaart met de klantentabel van de MySQL-database. Dubbelklik hiervoor op “MySQL-database ” (ODBC-bestemming) en selecteer in het dialoogvenster “ODBC-bestemming” de optie “Mapping ” optie die zich in het linkerdeelvenster van het dialoogvenster bevindt, zoals weergegeven in de onderstaande afbeelding:

In de bovenstaande afbeelding zijn "Invoerkolommen" de kolomnaam van de SQL Server-tabel en de doelkolom is de kolomnaam van de tabel "Klanten" van het MySQL-blad. In deze demo is de kolomnaam van de SQL-tabel en MySQL-tabellen hetzelfde, zodat de invoer- en uitvoerkolommen automatisch worden toegewezen.

Herhaal het configuratieproces van de gegevensstroom voor het gegevenspad "Oracle Output" op dezelfde manier. Hieronder staan ​​de wijzigingen.

  1. We moeten "Oracle-uitvoer" selecteren in het dialoogvenster voor het selecteren van invoer-uitvoer, zoals weergegeven in de onderstaande afbeelding:
  2. Controleer in "ADO.NET Destination Editor" of de toewijzingen van de invoer-uitvoerkolommen correct zijn, zoals weergegeven in de onderstaande afbeelding:

Zodra alle configuraties zijn voltooid, ziet de volledige gegevensstroomtaak eruit als de onderstaande afbeelding:

SSIS-pakket testen

Voer nu het pakket uit door op de knop "Start" in de menubalk te klikken. Als het pakket de uitvoering met succes voltooit, zou het eruit moeten zien als de onderstaande afbeelding:

Pakket heeft de uitvoer van SQL-gegevens verdeeld door voorwaardelijke splitsing te gebruiken en 4.445 records in MySQL-database en 2.285 records in Oracle-database geëxporteerd.

Samenvatting

In dit artikel hebben we de ODBC-verbinding geconfigureerd voor MySQL, een SSIS-pakket gemaakt met een gegevensstroom. We gebruikten Conditional Split Transformation om de uitvoer te splitsen, opgehaald uit de SQL-serverdatabase en deze te exporteren naar Oracle- en MySQL-databases.

Handige hulpmiddelen:

Devart SSIS Data Flow Components – hiermee kunt u database- en cloudgegevens integreren via SQL Server Integration Services.

Devart ODBC-stuurprogramma's – bieden hoogwaardige en veelzijdige connectiviteitsoplossingen voor op ODBC gebaseerde toepassingen.


  1. Haal de database of een ander bestand op uit de interne opslag met behulp van run-as

  2. Hoe de naam van een beperking in Oracle te vinden

  3. Oracle SQL-query voor het weergeven van alle schema's in een DB

  4. Hoe u SQL Server-taken migreert van de ene SQL Server-instantie naar de andere?