Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Conditional Split Transformation:Exportieren Sie Daten von SQL Server in Oracle- und MySQL-Datenbanken

In diesem Artikel habe ich erklärt, wie wir Daten der SQL Server-Datenbanktabelle in Oracle- und MySQL-Datenbanken aufteilen und exportieren können. Dieser Prozess basiert auf der Bedingung, die in SSIS als „conditional split transformation“ definiert ist “. Die bedingte Split-Transformation ist wie die Case-Anweisung jeder Programmiersprache. Durch die Verwendung von bedingt können wir die Ausgabe einer Komponente an mehrere Ziele umleiten, die auf einer Bedingung basiert, die in der bedingten Teilungskomponente definiert ist.

Demo-Setup

Wir können Daten von verschiedenen Datenbankplattformen abrufen, indem wir eine ODBC-Verbindung verwenden, während wir SQL Server-Datentools verwenden. Die meisten Datenbankplattformen stellen ihre Konnektivitätstreiber bereit, die verwendet werden können, um die Verbindung zwischen Anwendung und Datenbank zu konfigurieren.

Ich werde Daten der Kundentabelle von „AdventureWorks2014 exportieren ”-Datenbank an Oracle und MySQL basierend auf der in Condition Split definierten Bedingung. Die Daten werden auf Basis des „StateProvinceName“ aufgeteilt “-Spalte von „Kunden " Tisch. Datensätze mit dem Wert „Kalifornien “ in „StateProvinceName “-Spalte wird in die Oracle-Datenbank und Datensätze exportiert, die den Wert „Washington“ haben “ wird in die MySQL-Datenbank exportiert.

Ich habe Oracle 11g Express Edition und MySQL 8.0 auf meinem lokalen Computer installiert. Ich habe eine XE-Datenbank in Oracle und „WideWorldImportors erstellt ” Datenbank auf dem MySQL-Server. Ich habe den „Kunde“ erstellt ”-Tabelle auf beiden Datenbanken. Unten ist der SQL-Code zum Erstellen einer Tabelle.

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

Bei Verwendung der Datenflusskomponente von SQL Server-Datentools können wir Daten zwischen verschiedenen Datenbanken übertragen, indem wir ODBC-Treiber konfigurieren. Die SQL Server-Datentools, die wir über den Verbindungsmanager installieren können, unterstützen bereits Oracle Client, aber für MySQL müssen wir eine ODBC-Datenquelle erstellen.

SQL Server-Datentools ist eine 32-Bit-Anwendung und wird im 32-Bit-Modus ausgeführt. Daher müssen wir den 32-Bit-ODBC-Treiber von MySQL herunterladen. Siehe folgendes Bild als Referenz:

Wir müssen „Connector/ODBC 8.0.11 installieren “, um die MySQL-Datenbank mit dem ODBC-Treiber zu verbinden. Der ODBC 8.0.11-Treiber ist für die 64-Bit-Betriebssystemplattform verfügbar. Daher müssen wir eine ältere Version von ODBC-Treibern verwenden. Siehe Bild unten:

Anstatt die von MySQL bereitgestellten Konnektivitätstreiber zu verwenden, habe ich den ODBC-Treiber für MySQL verwendet entwickelt von Devart.

Der Devart ODBC-Treiber für MySQL ist ein leistungsstarker und leistungsstarker Konnektivitätstreiber. Es ist plattformunabhängig, einfach zu konfigurieren und unterstützt Tools von Drittanbietern für die MySQL-Datenbankverbindung. Nachfolgend sind die Funktionen aufgeführt.

  1. Unterstützt sichere SSL- und SSH-Verbindungen.
  2. Kompatibel mit jeder Version von MySQL. Es unterstützt MariaDB, Azure-Datenbank für MySQL und Amazon Aurora.
  3. Kompatibel mit vielen Analysetools von Drittanbietern.
  4. Plattformunabhängig. Es unterstützt sowohl 32-Bit- als auch 64-Bit-Betriebssystemplattformen und viele mehr.

Sie können eine 30-tägige Testversion des ODBC-Treibers für MySQL herunterladen hier . Sehen Sie sich das folgende Bild als Referenz an:

Sobald die Treiber heruntergeladen sind, installieren Sie sie, indem Sie setup ausführen.

Sobald die Treiber installiert sind, müssen wir die ODBC-Datenquelle konfigurieren, um die MySQL-Datenbank zu verbinden. Öffnen Sie dazu ODBC-Datenquellen (32-Bit). Es befindet sich unter Systemsteuerung>> Verwaltung>> ODBC-Datenquellen. Siehe folgendes Bild als Referenz:

Öffnen Sie ODBC-Datenquellen (32-Bit). Das Dialogfeld „ODBC-Datenquellen-Administrator (32-Bit) " wird Öffnen. Klicken Sie in diesem Dialogfeld auf „Hinzufügen“. “. Ein weiterer Dialog „Neue Datenquelle erstellen “, das alle ODBC-Treiber auf dem Computer installiert hat, wird geöffnet. Wählen Sie aus dieser Liste „Devart ODBC Driver for MySQL“. “ und klicken Sie auf „Fertig stellen “. Sehen Sie sich das folgende Bild als Referenz an:

Sobald Sie auf „Fertig stellen klicken “, öffnet sich ein Dialogfeld zum Konfigurieren der MySQL-Verbindungsparameter. In diesem Dialogfeld können Sie die Konnektivitätsparameter definieren. Geben Sie in den entsprechenden Feldern den Namen und die Beschreibung an, um die Datenquelle zu erkennen. Unter „Server ” Textfeld geben Sie den Namen des Hostnamens oder die IP-Adresse des Computers/Servers an, auf dem MySQL installiert ist. Geben Sie den entsprechenden Benutzernamen und das Kennwort ein, um sich beim Server anzumelden, und wählen Sie die Datenbank aus. Sehen Sie sich das folgende Bild als Referenz an:

Ich habe MySQL auf meinem lokalen Computer installiert, daher habe ich „localhost“ als Server-Textfeld bereitgestellt. Ich verbinde mich über den Benutzer „root“ mit dem Server, daher ist der Benutzer „root“. Im Idealfall ist es nicht vorzuziehen. Erstellen Sie anstelle von root einen anderen Benutzer und verwenden Sie ihn, um die MySQL-Datenbank zu authentifizieren. Ich habe „WideWorldImportors“ erstellt ”-Datenbank auf dem MySQL-Datenbankserver, daher habe ich “WideWorldImportors bereitgestellt ” im Datenbank-Dropdown-Feld.

Um die Oracle-Datenbank mithilfe von SSDT zu verbinden, müssen wir die Oracle-Client-Software installieren. SQL Server-Datentools arbeiten im 32-Bit-Modus, daher muss die 32-Bit-Version der ODBC-Treiber für Oracle installiert werden. Sie können Oracle Client hier herunterladen.

Da wir alle wissen, wie man ein SSIS-Paket erstellt, werde ich direkt erklären, wie man die Datenflussaufgabe erstellt.

Datenflussaufgabe erstellen

In der Datenflussaufgabe verwenden wir vier Komponenten:

  1. ADO.NET-Quelle zum Auffüllen von Daten aus der SQL Server-Datenbank.
  2. Bedingte Aufteilung, um Daten in mehrere Sätze aufzuteilen.
  3. MySQL-Ziel und Oracle-Ziel konfigurieren
  4. Konfigurieren Sie den Datenpfad, um die Ausgabe der bedingten Teilung in relevanten Datenbanken zu speichern.

ADO.NET-Quelle konfigurieren

Ziehen Sie „ADO.NET-Quelle per Drag-and-Drop “ von SSIS Toolbox zu „Datenfluss “ Fenster und nennen Sie es „Verkaufsdaten “, wie im folgenden Bild gezeigt:

Doppelklicken Sie auf „Verkaufsdaten“. “. Das Dialogfeld „ADO.NET Source Editor " wird Öffnen. Als Verbindungsmanager ist noch nicht erstellt, daher „ADO.NET Connection Manager ” Dropdown-Feld ist leer. Um eine neue Verbindung in diesem Dialogfeld zu erstellen, klicken Sie auf „Neu “. Ein weiterer Dialog „Verbindungsmanager konfigurieren “ wird wie im folgenden Bild gezeigt geöffnet:

Unter „ADO.NET-Verbindungsmanager konfigurieren Klicken Sie im Dialogfeld „Neu“ auf „Neu“. “, um den „Verbindungsmanager“ zu öffnen ”-Dialogfeld.

Unter „Servername ” Textfeld geben Sie den Namen oder die IP-Adresse des Servers ein, auf dem SQL Server installiert wurde. SQL Server ist auf meinem lokalen Computer installiert, daher habe ich „localhost\SQL2016 bereitgestellt ” als Textfeld für den Servernamen. Wählen Sie im Dropdown-Feld Authentifizierung den Authentifizierungstyp aus, der zum Herstellen einer Verbindung mit der SQL-Instanz verwendet wird. Ich authentifiziere mich bei SQL Server mit der Windows-Authentifizierung, daher habe ich die Windows-Authentifizierung im Dropdown-Feld ausgewählt. Wählen Sie schließlich im Dropdown-Feld Datenbank den Namen der Datenbank aus, in der die Tabelle gespeichert ist. Ich exportiere Daten aus der Datei „AdventureWorks2014 “Datenbank, daher habe ich sie in „Datenbankname“ ausgewählt " Dropdown-Feld. Sehen Sie sich das folgende Bild an:

Klicken Sie nach Abschluss der Konfiguration auf „Verbindung testen“. “, um die Verbindung mit der Datenbank zu überprüfen, und klicken Sie auf „OK“.

Wir haben den ADO.NET-Verbindungsmanager konfiguriert, daher wird der Standard-Verbindungsmanager automatisch im „ADO.NET-Verbindungsmanager“ ausgewählt " Dropdown-Liste. Um Daten aus einer Tabelle abzurufen, wählen Sie „Tabelle oder Ansicht“. “ im Dropdown-Feld Datenzugriffsmodus. Sobald Sie die Option „Tabelle oder Ansicht“ im Dropdown-Feld auswählen, wird eine Liste aller in der Datenbank erstellten Tabellen angezeigt. Wählen Sie aus dieser Liste „Kunden“ aus ” Tabelle, wie im folgenden Bild gezeigt:

Bedingte Teilung konfigurieren

Jetzt verwenden wir die bedingte Teilungstransformation zum Exportieren von Daten in verschiedene Arbeitsblätter von Excel basierend auf der Bedingung. Ziehen Sie die bedingte Teilungskomponente aus der SSIS-Toolbox in das Datenflussfenster und benennen Sie sie in „Datenfilter“ um “, wie auf dem folgenden Bild gezeigt:

Wie ich bereits erwähnt habe, wird die Ausgabe der Daten der Tabelle „Kunden“ in mehrere Oracle- und MySQL-Datenbanken exportiert, basierend auf der Bedingung, die in „Bedingte Teilung“ definiert ist ” Komponente.

Verbinden Sie zunächst die ADO.Net-Quelle mit der bedingten Teilungstransformation. Klicken Sie dazu auf den blauen Pfeil im Datenflusspfad unter „Customers SQL DB“. ”-Komponente und ziehen Sie sie in die bedingte Teilungstransformation, wie im folgenden Bild gezeigt:

Um die bedingte Teilung zu konfigurieren, doppelklicken Sie auf „Conditional Split Transformation Editor“. Ein Dialogfeld „Conditional Split Transformation Editor “ wird wie im folgenden Bild gezeigt geöffnet:

Um eine Bedingung auf „StateProvinceName “erweitern Sie zuerst den Spaltenknoten, ziehen Sie den “StateProvinceName ”-Spalte (Abschnitt 1), und legen Sie sie im Raster ab (Abschnitt 3). Die Datenfilterbedingung befindet sich in der Spalte „StateProvinceName“. Datensätze mit dem Wert „Kalifornien “ werden in die Oracle-Datenbank und Datensätze mit dem Wert „Washington“ exportiert “ wird in die MySQL-Datenbank exportiert. Basierend auf der Bedingung verwenden wir ist gleich (==) Operator. Die Gleichung lautet wie folgt:

[Cust_State]=="California"

[Cust_State]=="Washington"

Sehen Sie sich das folgende Bild an:

Sobald die Bedingungen definiert sind, klicken Sie auf „OK“, um zu speichern und das Dialogfeld zu schließen.

MySQL-Ziel konfigurieren

Um Daten von SQL Server nach MySQL und Oracle zu exportieren, müssen wir daher zwei Ziele konfigurieren. Konfigurieren Sie zunächst das MySQL-Ziel. Ziehen Sie dazu das ODBC-Ziel per Drag-and-Drop aus der SSIS-Toolbox und benennen Sie es in „MySQL-Datenbank“ um, wie im folgenden Bild gezeigt:

Doppelklicken Sie auf das Ziel MySQL-Datenbank (ODBC-Verbindung). Ein Dialogfeld „ODBC-Ziel“ wird geöffnet. Klicken Sie in diesem Dialogfeld auf „Neu“. Ein weiteres Dialogfeld „ODBC-Verbindungsmanager konfigurieren“ wird geöffnet, wie in der folgenden Abbildung gezeigt:

Ein weiterer Dialog „Verbindungsmanager " wird Öffnen. Im Dialogfeld wird eine Liste der auf dem Computer erstellten DSNs angezeigt, die in „Name der Benutzer- oder Systemdatenquelle verwenden ausgefüllt ist " Dropdown-Feld. Da wir den ODBC-DSN bereits konfiguriert haben, wählen Sie das „MySQL-Ziel ” aus der Dropdown-Liste, wie im folgenden Bild gezeigt:

Klicken Sie auf „Verbindung testen“. “, um zu überprüfen, ob die Verbindung erfolgreich hergestellt wurde, und klicken Sie auf „OK“.

Jetzt in „ODBC-Ziel Wählen Sie im Dialogfeld „Name der Tabelle oder Ansicht den Tabellennamen aus ” Dropdown-Feld, wie im folgenden Bild gezeigt:

Sobald das MySQL-Datenbankziel erfolgreich konfiguriert wurde, konfigurieren Sie das Oracle-Datenbankziel.

Oracle-Ziel konfigurieren

Um das Oracle-Ziel zu konfigurieren, ziehen Sie „ADO.NET Destination“ per Drag &Drop in das Datenflussfenster und benennen Sie es in „Oracle Database“ um, wie in der folgenden Abbildung gezeigt:

Doppelklicken Sie auf Oracle Database (ADO.NET-Ziel). Ein Dialogfeld „ADO.NET Destination Editor " wird Öffnen. Klicken Sie im Dialogfenster auf „Neu “. Ein weiteres Dialogfeld „ADO.NET Connection Manager konfigurieren“ wird wie im folgenden Bild gezeigt geöffnet:

Klicken Sie auf „ADO.NET Connection Manager konfigurieren Klicken Sie im Dialogfeld „Neu“ auf „Neu“. “. Ein weiteres Dialogfeld „Verbindungsmanager“ wird geöffnet. Um die Oracle-Datenbankkonnektivität zu konfigurieren, müssen wir „Net.Provider\OracleClient auswählen “ in „Anbieter " Dialogbox. Geben Sie den Hostnamen oder die IP-Adresse des Oracle-Datenbankservers in das Textfeld „Servername“ ein. Geben Sie Benutzername und Passwort an, um die Oracle-Datenbankinstanz zu verbinden. Wie ich bereits erwähnt habe, habe ich die Oracle-Instanz als meine lokale Maschine installiert, daher habe ich „localhost“ im Textfeld für den Servernamen angegeben. Ich habe die Oracle-Datenbank mit dem Benutzer „Sales“ verbunden, daher habe ich im Textfeld „Benutzername“ „Sales“ als Benutzernamen und das dazugehörige Passwort eingegeben. Sehen Sie sich das folgende Bild an:

Um zu überprüfen, ob die Verbindung hergestellt wurde, klicken Sie auf „Verbindung testen “ und sobald die Verbindung hergestellt ist, klicken Sie auf „OK ” um das Dialogfenster zu schließen.

Jetzt auf „ADO.NET-Zieleditor Wählen Sie im Dialogfeld "Tabellen- oder Ansichtsnamen aus, in der Daten gespeichert werden sollen. Ich exportiere Daten in die Kundentabelle, daher habe ich „Sales.Customer ausgewählt ” Tabelle, wie im folgenden Bild gezeigt:

Datenpfad konfigurieren

Sobald beide Ziele konfiguriert sind, konfigurieren Sie den Datenpfad, um Daten in die jeweiligen Datenbanken zu übertragen. Ziehen Sie dazu den blauen Datenpfadpfeil unter die bedingte Teilungstransformation und legen Sie ihn auf dem ODBC-Ziel (MySQL-Ziel) ab. Wenn der Datenpfad eine Verbindung zum ODBC-Ziel herstellt, wird ein Dialogfeld angezeigt. Wählen Sie das Ziel unter „Ausgabe“. ” Dropdown-Feld, um die Daten zu leiten, die von der SQL-Abfrage abgerufen werden. Das Dialogfeld sieht wie im folgenden Bild aus:

Die Dropdown-Liste wird mit allen Bedingungen gefüllt, die in der bedingten Teilungstransformation definiert sind. In diesem Fall enthält ein Dropdown-Menü drei Optionen.

  1. MySQL-Ausgabe
  2. Oracle-Ausgabe
  3. Standardausgabe

Wie oben erwähnt, werden Datensätze mit dem Wert „Washington ” der Spalte „StateProvinceName“ wird in die MySQL-Datenbank exportiert, wählen Sie daher MySQL Output.

Ordnen Sie nun die Ausgabespalten der bedingten Transformation der Kundentabelle der MySQL-Datenbank zu. Doppelklicken Sie dazu auf „MySQL-Datenbank“. “ (ODBC-Ziel) und wählen Sie im Dialogfeld „ODBC-Ziel“ die Option „Mapping“. “, die sich im linken Bereich des Dialogfelds befindet, wie in der folgenden Abbildung gezeigt:

In der obigen Abbildung sind „Eingabespalten“ der Spaltenname der SQL Server-Tabelle und die Zielspalte ist der Spaltenname der Tabelle „Kunden“ des MySQL-Arbeitsblatts. In dieser Demo sind die Spaltennamen der SQL-Tabelle und der MySQL-Tabellen identisch, sodass ihre Eingabe- und Ausgabespalten automatisch zugeordnet werden.

Wiederholen Sie die Konfiguration des Datenflusses für den Datenpfad „Oracle Output“ auf die gleiche Weise. Unten sind die Änderungen.

  1. Wir müssen „Oracle Output“ im Input-Output-Auswahldialog auswählen, wie im folgenden Bild gezeigt:
  2. Vergewissern Sie sich im „ADO.NET Destination Editor“, dass die Eingabe-Ausgabe-Spaltenzuordnungen korrekt sind, wie in der folgenden Abbildung gezeigt:

Sobald alle Konfigurationen abgeschlossen sind, sieht die gesamte Datenflussaufgabe wie im folgenden Bild aus:

SSIS-Paket testen

Führen Sie nun das Paket aus, indem Sie auf die Schaltfläche „Start“ in der Menüleiste klicken. Wenn das Paket seine Ausführung erfolgreich abschließt, sollte es wie im folgenden Bild aussehen:

Das Paket hat die Ausgabe von SQL-Daten mithilfe der bedingten Aufteilung aufgeteilt und 4.445 Datensätze in die MySQL-Datenbank und 2.285 Datensätze in die Oracle-Datenbank exportiert.

Zusammenfassung

In diesem Artikel haben wir die ODBC-Verbindung für MySQL konfiguriert und ein SSIS-Paket mit einem Datenfluss erstellt. Wir haben Conditional Split Transformation verwendet um die Ausgabe aufzuteilen, die von der SQL-Server-Datenbank abgerufen und in Oracle- und MySQL-Datenbanken exportiert wird.

Nützliche Tools:

Devart SSIS-Datenflusskomponenten – ermöglichen Ihnen die Integration von Datenbank- und Cloud-Daten über SQL Server Integration Services.

Devart ODBC-Treiber – bieten leistungsstarke und funktionsreiche Konnektivitätslösungen für ODBC-basierte Anwendungen.