Mysql
 sql >> Base de données >  >> RDS >> Mysql

Transformation de fractionnement conditionnel :exporter des données de SQL Server vers des bases de données Oracle et MySQL

Dans cet article, j'ai expliqué comment nous pouvons diviser et exporter les données de la table de base de données SQL Server dans les bases de données Oracle et MySQL. Ce processus est basé sur la condition définie dans SSIS comme « transformation conditionnelle fractionnée ”. La transformation fractionnée conditionnelle est comme l'instruction case de n'importe quel langage de programmation. En utilisant le conditionnel, nous pouvons rediriger la sortie d'un composant vers plusieurs destinations en fonction d'une condition définie dans le composant de fractionnement conditionnel.

Configuration de la démo

Nous pouvons récupérer des données à partir de diverses plates-formes de base de données en utilisant une connexion ODBC tout en utilisant des outils de données SQL Server. La plupart des plateformes de bases de données fournissent leurs pilotes de connectivité qui peuvent être utilisés pour configurer la connexion entre l'application et la base de données.

Je vais exporter les données de la table client de "AdventureWorks2014 ” base de données vers Oracle et MySQL en fonction de la condition définie dans condition split. Les données seront divisées sur la base du "StateProvinceName ” colonne de “Clients " table. Les enregistrements qui ont la valeur nommée "California ” dans “StateProvinceName ” sera exportée vers la base de données Oracle et les enregistrements ayant la valeur nommée “Washington ” sera exporté vers la base de données MySQL.

J'ai installé Oracle 11g express edition et MySQL 8.0 sur ma machine locale. J'ai créé la base de données XE dans Oracle et "WideWorldImportors ” base de données sur le serveur MySQL. J'ai créé le "Client ” table sur les deux bases de données. Ci-dessous le code SQL pour créer une table.

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

Lors de l'utilisation du composant de flux de données des outils de données SQL Server, nous pouvons transférer des données entre différentes bases de données en configurant les pilotes ODBC. Les outils de données SQL Server que nous pouvons installer par le gestionnaire de connexion prennent déjà en charge Oracle Client, mais pour MySQL, nous devons créer une source de données ODBC.

Les outils de données SQL Server sont une application 32 bits et s'exécutent en mode 32 bits. Par conséquent, nous devons télécharger le pilote ODBC 32 bits de MySQL. Voir l'image ci-dessous pour référence :

Nous devons installer "Connector/ODBC 8.0.11 ” afin de connecter la base de données MySQL à l'aide du pilote ODBC. Le pilote ODBC 8.0.11 est disponible pour la plate-forme de système d'exploitation 64 bits. Par conséquent, nous devons utiliser une ancienne version des pilotes ODBC. Voir l'image ci-dessous :

Au lieu d'utiliser les pilotes de connectivité fournis par MySQL, j'ai utilisé le pilote ODBC pour MySQL développé par Devart.

Devart ODBC Driver for MySQL est un pilote de connectivité puissant et performant. Il est indépendant de la plate-forme, facile à configurer et prend en charge les outils tiers pour la connexion à la base de données MySQL. Voici les fonctionnalités.

  1. Prend en charge les connexions sécurisées SSL et SSH.
  2. Compatible avec toutes les versions de MySQL. Il prend en charge MariaDB, la base de données Azure pour MySQL et Amazon Aurora.
  3. Compatible avec de nombreux outils d'analyse tiers.
  4. Indépendant de la plate-forme. Il prend en charge les plates-formes de système d'exploitation 32 bits et 64 bits et bien d'autres.

Vous pouvez télécharger la version d'essai de 30 jours du pilote ODBC pour MySQL ici . Voir l'image suivante pour référence :

Une fois les pilotes téléchargés, installez-les en exécutant la configuration.

Une fois les pilotes installés, nous devons configurer la source de données ODBC pour connecter la base de données MySQL. Pour ce faire, ouvrez les sources de données ODBC (32 bits). Il se trouve dans Panneau de configuration>> Outils d'administration>> Sources de données ODBC. Voir l'image ci-dessous pour référence :

Ouvrez les sources de données ODBC (32 bits). La boîte de dialogue "Administrateur de source de données ODBC (32 bits) " ouvrira. Dans cette boîte de dialogue, cliquez sur "Ajouter ”. Une autre boîte de dialogue "Créer une nouvelle source de données ” qui a tous les pilotes ODBC installés sur l'ordinateur s'ouvrira. Dans cette liste, sélectionnez "Devart ODBC Driver for MySQL " et cliquez sur " Terminer ”. Voir l'image suivante pour référence :

Une fois que vous avez cliqué sur "Terminer ”, une boîte de dialogue pour configurer les paramètres de connectivité MySQL s'ouvrira. Dans cette boîte de dialogue, vous pouvez définir les paramètres de connectivité. Indiquez le nom et la description pour reconnaître la source de données dans les champs appropriés. Dans "Serveur ” la zone de texte indique le nom d'hôte ou l'adresse IP de l'ordinateur/du serveur sur lequel MySQL est installé. Fournissez le nom d'utilisateur et le mot de passe appropriés pour vous connecter au serveur et sélectionnez la base de données. Voir l'image suivante pour référence :

J'ai installé MySQL sur ma machine locale, j'ai donc fourni "localhost" comme zone de texte Server. Je me connecte au serveur par l'utilisateur "root" donc l'utilisateur est "root". Idéalement, ce n'est pas préférable. Au lieu de root, créez un autre utilisateur et utilisez-le pour authentifier la base de données MySQL. J'ai créé "WideWorldImportors " base de données sur le serveur de base de données MySQL, j'ai donc fourni "WideWorldImportors ” dans la liste déroulante de la base de données.

De même, pour connecter la base de données Oracle à l'aide de SSDT, nous devons installer le logiciel client Oracle. Les outils de données SQL Server fonctionnent en mode 32 bits. Par conséquent, la version 32 bits des pilotes ODBC pour Oracle doit être installée. Vous pouvez télécharger le client Oracle à partir d'ici.

Comme nous savons tous comment créer un package SSIS, je vais directement vous expliquer comment créer la tâche de flux de données.

Créer une tâche de flux de données

Dans la tâche de flux de données, nous allons utiliser quatre composants :

  1. Source ADO.NET pour remplir les données de la base de données SQL Server.
  2. Fraction conditionnelle pour diviser les données en plusieurs ensembles.
  3. Configurer la destination MySQL et la destination Oracle
  4. Configurez le chemin de données pour stocker la sortie de la division conditionnelle dans les bases de données pertinentes.

Configurer la source ADO.NET

Faites glisser et déposez "Source ADO.NET " de la boîte à outils SSIS à "Flux de données " et nommez-le "Données de vente ” comme indiqué dans l'image suivante :

Double-cliquez sur "Données de vente ”. La boîte de dialogue "Éditeur de source ADO.NET " ouvrira. Comme le gestionnaire de connexion n'est pas encore créé, donc "Gestionnaire de connexion ADO.NET » la liste déroulante est vide. Pour créer une nouvelle connexion dans cette boîte de dialogue, cliquez sur "Nouveau ”. Une autre boîte de dialogue "Configurer le gestionnaire de connexion " s'ouvrira comme indiqué sur l'image ci-dessous :

Dans "Configurer le gestionnaire de connexion ADO.NET », cliquez sur « Nouveau " pour ouvrir "Gestionnaire de connexion ” boîte de dialogue.

Dans "Nom du serveur ” zone de texte, entrez le nom ou l'adresse IP du serveur sur lequel SQL Server a été installé. SQL Server est installé sur ma machine locale, j'ai donc fourni "localhost\SQL2016 ” comme zone de texte du nom du serveur. Dans la liste déroulante Authentification, sélectionnez le type d'authentification utilisé pour se connecter à l'instance SQL. Je m'authentifie sur le serveur SQL en utilisant l'authentification Windows, j'ai donc sélectionné l'authentification Windows dans la liste déroulante. Et enfin, dans la liste déroulante de la base de données, sélectionnez le nom de la base de données dans laquelle la table est stockée. J'exporte des données de "AdventureWorks2014 "base de données, donc je l'ai sélectionné dans" Nom de la base de données ” liste déroulante. Regardez l'image suivante :

Une fois la configuration terminée, cliquez sur « Tester la connexion " pour vérifier la connectivité avec la base de données et cliquez sur "OK".

Nous avons configuré le gestionnaire de connexions ADO.NET, par conséquent le gestionnaire de connexions par défaut sera automatiquement sélectionné dans "ADO.NET Connection Manager " menu déroulant. Pour récupérer les données d'un tableau, sélectionnez "Table ou Vue ” dans la liste déroulante du mode d'accès aux données. Une fois que vous avez sélectionné l'option "Table ou vue" dans la liste déroulante, une liste de toutes les tables créées dans la base de données apparaît. Dans cette liste, sélectionnez "Clients ” tableau comme indiqué dans l'image suivante :

Configurer le fractionnement conditionnel

Nous allons maintenant utiliser la transformation de division conditionnelle pour exporter des données dans différentes feuilles de calcul d'Excel en fonction de la condition. Faites glisser le composant de fractionnement conditionnel de la boîte à outils SSIS vers la fenêtre Flux de données et renommez-le en "Filtre de données ” comme indiqué sur l'image ci-dessous :

J'ai mentionné plus tôt, la sortie des données de la table "Clients" sera exportée dans plusieurs bases de données Oracle et MySQL en fonction de la condition définie dans "Répartition conditionnelle ” composant.

Tout d'abord, connectez la source ADO.Net à la transformation de fractionnement conditionnel. Pour ce faire, cliquez sur la flèche bleue sur le chemin du flux de données sous "Customers SQL DB " et faites-le glisser vers la transformation de division conditionnelle comme indiqué sur l'image ci-dessous :

Pour configurer le fractionnement conditionnel, double-cliquez sur "Éditeur de transformation de fractionnement conditionnel". Une boîte de dialogue "Éditeur de transformation de fractionnement conditionnel " s'ouvrira comme indiqué dans l'image suivante :

Pour appliquer une condition sur "StateProvinceName ", développez d'abord le nœud de la colonne, faites glisser le "StateProvinceName ” (Section 1) et déposez-le dans la grille (Section 3). La condition de filtrage des données est sur la colonne "StateProvinceName". Les enregistrements qui ont une valeur "Californie " seront exportés vers la base de données Oracle et les enregistrements qui ont une valeur "Washington ” sera exporté vers la base de données MySQL. En fonction de la condition, nous allons utiliser est égal à (==) opérateur. L'équation est la suivante :

[Cust_State]=="California"

[Cust_State]=="Washington"

Regardez l'image suivante :

Une fois les conditions définies, cliquez sur "OK" pour enregistrer et fermer la boîte de dialogue.

Configurer la destination MySQL

Pour exporter des données de SQL Server vers MySQL et Oracle, nous devons donc configurer deux destinations. Tout d'abord, configurez la destination MySQL. Pour ce faire, faites glisser et déposez la destination ODBC de la boîte à outils SSIS et renommez-la en "Base de données MySQL" comme indiqué dans l'image ci-dessous :

Double-cliquez sur la destination de la base de données MySQL (connexion ODBC). Une boîte de dialogue "Destination ODBC" s'ouvrira. Dans cette boîte de dialogue, cliquez sur "Nouveau". Une autre boîte de dialogue "Configurer le gestionnaire de connexion ODBC" s'ouvrira, comme illustré dans l'image suivante :

Une autre boîte de dialogue "Gestionnaire de connexion " ouvrira. Dans la boîte de dialogue, liste des DSN créées sur la machine qui est renseignée par "Utiliser le nom de la source de données utilisateur ou système ” liste déroulante. Comme nous avons déjà configuré le DSN ODBC, sélectionnez la "Destination MySQL " dans la liste déroulante comme indiqué dans l'image ci-dessous :

Cliquez sur "Tester la connexion " pour vérifier que la connexion a été établie avec succès et cliquez sur " OK ".

Maintenant dans "Destination ODBC », sélectionnez le nom de la table dans « Nom de la table ou de la vue ” liste déroulante comme indiqué dans l'image suivante :

Une fois la destination de la base de données MySQL configurée avec succès, configurez la destination de la base de données Oracle.

Configurer la destination Oracle

Pour configurer la destination Oracle, faites glisser et déposez "Destination ADO.NET" dans la fenêtre de flux de données et renommez-la en "Base de données Oracle" comme indiqué sur l'image suivante :

Double-cliquez sur Oracle Database (destination ADO.NET). Une boîte de dialogue "Éditeur de destination ADO.NET " ouvrira. Dans la boîte de dialogue, cliquez sur "Nouveau ”. Une autre boîte de dialogue "Configurer le gestionnaire de connexion ADO.NET" s'ouvrira comme indiqué dans l'image suivante :

Sur "Configurer le gestionnaire de connexion ADO.NET », cliquez sur « Nouveau ”. Une autre boîte de dialogue "Gestionnaire de connexion" s'ouvrira. Pour configurer la connectivité de la base de données Oracle, nous devons sélectionner "Net.Provider\OracleClient ” dans “Fournisseur " boite de dialogue. Indiquez le nom d'hôte ou l'adresse IP du serveur de base de données Oracle dans la zone de texte "Nom du serveur". Fournissez un nom d'utilisateur et un mot de passe pour connecter l'instance de base de données Oracle. Comme je l'ai mentionné, j'ai installé l'instance Oracle en tant que machine locale, j'ai donc fourni "localhost" dans la zone de texte du nom du serveur. J'ai connecté la base de données oracle en utilisant l'utilisateur "Ventes", donc dans la zone de texte "Nom d'utilisateur", j'ai entré "Ventes" comme nom d'utilisateur et entré le mot de passe de celui-ci. Regardez l'image suivante :

Pour vérifier que la connexion a été établie, cliquez sur "Tester la connexion " et une fois la connexion établie, cliquez sur " OK ” pour fermer la boîte de dialogue.

Maintenant sur "éditeur de destination ADO.NET », sélectionnez le nom de la table ou de la vue dans laquelle les données doivent être enregistrées. J'exporte des données vers la table des clients, j'ai donc sélectionné "Sales.Customer ” tableau comme indiqué dans l'image suivante :

Configurer le chemin des données

Une fois les deux destinations configurées, configurez le chemin de données pour transférer les données dans les bases de données respectives. Pour ce faire, faites glisser la flèche bleue du chemin de données sous la transformation de division conditionnelle et déposez-la sur la destination ODBC (destination MySQL). Lorsque le chemin de données se connecte à la destination ODBC, une boîte de dialogue s'affiche. Sélectionnez la destination dans "Sortie ” pour diriger les données extraites de la requête SQL. La boîte de dialogue ressemble à l'image ci-dessous :

La liste déroulante est remplie de toutes les conditions définies dans la transformation de fractionnement conditionnel. Dans ce cas, un menu déroulant comprend trois options.

  1. Sortie MySQL
  2. Sortie Oracle
  3. Sortie par défaut

Comme mentionné ci-dessus, les enregistrements qui ont la valeur "Washington " de la colonne "StateProvinceName" sera exporté vers la base de données MySQL, sélectionnez donc la sortie MySQL.

Mappez maintenant les colonnes de sortie de la transformation conditionnelle avec la table clients de la base de données MySQL. Pour cela, double-cliquez sur "Base de données MySQL " (destination ODBC) et dans la boîte de dialogue "Destination ODBC", sélectionnez "Mappage ” option qui se trouve dans le volet gauche de la boîte de dialogue comme indiqué dans l'image ci-dessous :

Dans l'image ci-dessus, "Colonnes d'entrée" sont le nom de la colonne de la table SQL Server et la colonne de destination sera le nom de la colonne de la table "Clients" de la feuille MySQL. Dans cette démo, le nom de colonne des tables SQL et MySQL est le même, de sorte que ses colonnes d'entrée et de sortie sont mappées automatiquement.

Répétez le processus de configuration du flux de données pour le chemin de données « Oracle Output » de la même manière. Vous trouverez ci-dessous les modifications.

  1. Nous devons sélectionner "Oracle Output" dans la boîte de dialogue de sélection des entrées-sorties, comme indiqué dans l'image ci-dessous :
  2. Dans "ADO.NET Destination Editor", vérifiez que les mappages de colonnes d'entrée-sortie sont corrects, comme indiqué dans l'image ci-dessous :

Une fois toutes les configurations terminées, l'ensemble de la tâche de flux de données ressemble à l'image ci-dessous :

Tester le package SSIS

Exécutez maintenant le package en cliquant sur le bouton "Démarrer" dans la barre de menus. Si le package termine son exécution avec succès, il devrait ressembler à l'image ci-dessous :

Le package a divisé la sortie des données SQL en utilisant le fractionnement conditionnel et a exporté 4 445 enregistrements dans la base de données MySQL et 2 285 enregistrements dans la base de données Oracle.

Résumé

Dans cet article, nous avons configuré la connexion ODBC pour MySQL, créé un package SSIS avec un flux de données. Nous avons utilisé la transformation fractionnée conditionnelle pour diviser la sortie, récupérée à partir de la base de données du serveur SQL et l'exporter dans les bases de données Oracle et MySQL.

Outils utiles :

Devart SSIS Data Flow Components - vous permet d'intégrer des données de base de données et de cloud via SQL Server Integration Services.

Pilotes ODBC Devart :fournissent des solutions de connectivité hautes performances et riches en fonctionnalités pour les applications basées sur ODBC.