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

Exportation d'une table Oracle vers une feuille de calcul Excel

Dans cet article, j'expliquerai comment nous pouvons diviser et exporter les données d'une table de base de données Oracle en plusieurs feuilles de calcul d'un fichier Excel à l'aide du package de service d'intégration SQL Server.

Souvent, les DBA ont demandé de générer des rapports Ad-Hoc à partir d'une base de données. Récemment, on m'a demandé de générer un rapport à partir de la base de données. Ils veulent que je fournisse un rapport dans plusieurs feuilles de calcul d'un fichier Excel. Il existe différentes façons de le faire, mais la requête était gourmande en ressources. Par conséquent, je souhaite extraire les données de la base de données en une seule exécution et j'ai décidé d'utiliser le package de services d'intégration SQL Server. Les outils de données SQL Server ont un composant appelé Transformation de fractionnement conditionnel qui peut être utilisé pour accomplir la tâche.

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

Qu'est-ce que la transformation fractionnée conditionnelle ?

La transformation Fractionnement conditionnel peut acheminer les lignes de données vers différentes sorties en fonction du contenu des données. L'implémentation de la transformation Conditional Split ressemble à une structure de décision CASE dans un langage de programmation. Il évalue les expressions et, en fonction des résultats, dirige la ligne de données vers la sortie spécifiée. Cette transformation fournit également une sortie par défaut, de sorte que si une ligne ne correspond à aucune expression, elle est dirigée vers la sortie par défaut. (Référence MSDN :https://docs.microsoft.com/en-us/sql/integration-services/data-flow/transformations/conditional-split-transformation?view=sql-server-2017) .

Configuration de la démo

J'ai installé Oracle 11g express edition sur ma machine. J'ai créé une table appelée EMPLOYEESDATA dans les RH schéma du XE base de données et ajouté quelques enregistrements factices de AdventureWorks2014 base de données.

Le code ci-dessous va créer un tableau :

 CREATE TABLE "HR"."EMPLOYEE_DATA" ( "BusinessEntityID" NUMBER(*,0), "Title" NVARCHAR2(8), "FirstName" NVARCHAR2(50), "MiddleName" NVARCHAR2(50), "LastName" NVARCHAR2(50), « Suffixe » NVARCHAR2(10), « JobTitle » NVARCHAR2(50), « PhoneNumber » NVARCHAR2(25), « PhoneNumberType » NVARCHAR2(50), « EmailAddress » NVARCHAR2(50), « EmailPromotion » NUMBER( *,0), "AddressLine1" NVARCHAR2(60), "AddressLine2" NVARCHAR2(60), "City" NVARCHAR2(30), "StateProvinceName" NVARCHAR2(50), "PostalCode" NVARCHAR2(15), "CountryRegionName" NVARCHAR2( 50)) Création de segments immédiatement PCTFREE 10 PCTUSE 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STOCKING (Initial 65536 Next 1048576 Minextents 1 MAXEXTENT 

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.

J'ai créé un fichier Excel appelé 'HRData.xls ' qui a deux feuilles de calcul appelées Australie et Canada . Les données seront divisées en fonction de la valeur de CountryRegionName colonne. Si la valeur de colonne de CountryRegionName la colonne est Canada alors il sera stocké au Canada feuille de calcul et si la valeur de colonne de CountryRegionName est l'Australie alors il sera stocké en Australie feuille de calcul.

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

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

Dans la tâche Flux de données, nous allons utiliser les trois composants suivants :

  1. Source ADO.NET pour remplir les données de la base de données Oracle.
  2. Fraction conditionnelle pour diviser les données en plusieurs ensembles.
  3. Destination Excel avec deux classeurs intitulés "Australie" et "Canada".

Configurer la source ADO.NET

Faites glisser et déposez la source ADO.NET de Boîte à outils SSIS au flux de données Windows et nommez-le Données des employés comme le montre l'image suivante :

Double-cliquez sur Données sur les employés . L'éditeur de source ADO.NET boîte de dialogue s'ouvrira. Ici, nous n'avons pas encore créé de connexion, d'où le gestionnaire de connexion ADO.NET la liste déroulante est vide. Nous allons créer une nouvelle connexion. Pour ce faire, cliquez sur Nouveau dans cette boîte de dialogue. Après cela, une autre boîte de dialogue, Configurer Connection Manager, s'ouvrira comme indiqué dans l'image ci-dessous :

Dans le Configurer le gestionnaire de connexion ADO.NET boîte de dialogue, cliquez sur Nouveau . Une autre boîte de dialogue, Gestionnaire de connexion , s'ouvrira.

Par défaut, Fournisseurs .Net\Fournisseur de données SQLClient sera sélectionné dans le Fournisseur boîte déroulante. Comme nous remplissons les données de la base de données Oracle, nous sélectionnerons OracleClient Data Provider .

Dans Nom du serveur zone de texte, entrez le nom ou l'adresse IP du serveur sur lequel Oracle 11g est installé. Le nom d'utilisateur et le mot de passe seront utilisés pour se connecter à la base de données Oracle. J'avais installé Oracle sur ma machine virtuelle locale, donc le nom du serveur sera localhost . Je vais connecter la base de données en utilisant le HR utilisateur donc le nom d'utilisateur sera HR . Fournissez le mot de passe approprié et cliquez sur OK . Voir 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, donc le gestionnaire de connexions par défaut sera sélectionné automatiquement dans le Gestionnaire de connexions ADO.NET zone de liste déroulante. Nous allons récupérer les données de la table, donc sélectionnez Table ou View dans la liste déroulante du mode d'accès aux données. J'ai déjà créé les EMPLOYEESDATA tableau dans le RH Schéma de la base de données Oracle, sélectionnez donc HR.EmployeesData dans le Nom de la table ou de la vue liste déroulante comme indiqué dans l'image ci-dessous :

Configurer le fractionnement conditionnel

Maintenant, pour exporter des données dans différentes feuilles de calcul Excel en fonction d'une condition, nous allons utiliser la transformation de fractionnement conditionnelle. Faites glisser le composant de fractionnement conditionnel depuis le SSIS boîte à outils au flux de données fenêtre comme indiqué dans l'image ci-dessous.

J'ai mentionné plus tôt, la sortie des données de la HR.EmployeeData le tableau sera exporté dans plusieurs feuilles de calcul en fonction de la condition définie dans le fractionnement conditionnel composant.

Tout d'abord, nous allons connecter la source ADO.Net à la transformation fractionnée conditionnelle. Pour ce faire, cliquez sur la flèche bleue sur le chemin du flux de données en bas des Données des employés composant et faites-le glisser vers la transformation de division conditionnelle, comme indiqué dans l'image ci-dessous.

Nous allons maintenant configurer la transformation fractionnée conditionnelle. Comme je l'ai mentionné précédemment, nous allons diviser les données de la table HR.EmployeesData en fonction de la valeur de CountryRegionName colonne et stockez-les dans différentes feuilles de calcul.

Pour ce faire, double-cliquez sur Éditeur de transformation de fractionnement conditionnel . L'éditeur de transformation de fractionnement conditionnel la boîte de dialogue s'ouvrira comme indiqué dans l'image suivante :

Comme vous pouvez le voir dans l'image ci-dessus, l'éditeur de transformation de fractionnement conditionnel comporte trois sections qui déterminent comment les données seront acheminées vers les composants suivants.

Section A  :Dans cette section, sous les Colonnes la liste des dossiers des colonnes de sortie, dérivée du composant source ADO.Net, sera répertoriée et pourra être utilisée pour définir les conditions de fractionnement des données.

Section B  :Dans cette section, diverses fonctions seront répertoriées qui peuvent être utilisées pour convertir la sortie dans différents formats et utilisées pour définir les conditions de fractionnement des données.

Section C  :Dans cette section, vous pouvez créer une condition qui peut diviser la sortie de la source ADO.Net en plusieurs ensembles de résultats.

Nous ajouterons la condition dans la Section-C. Alors, développez d'abord le nœud de la colonne et faites glisser le CountryRegionName colonne (Section A) et déposez-la dans la grille (Section C) comme indiqué dans l'image suivante :

Pour cet exemple, nous allons définir notre condition en fonction du CountryRegionName colonne. La liste des employés du « Canada » sera stockée dans la feuille de calcul Excel nommée Canada et une liste d'employés d'Australie sera stockée dans le Australie feuille de travail. En fonction de la condition, nous allons utiliser les égal à (==) opérateur. L'équation sera la suivante :

[CountryRegionName]=="Australie"[CountryRegionName]=="Canada"

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

Configuration de la destination Excel

Maintenant que nous avons divisé le flux de données en plusieurs chemins, nous allons ajouter une destination pour chaque chemin. Comme nous allons exporter des données de table dans différentes feuilles de calcul Excel, nous devons donc créer deux destinations Excel. Pour ce faire, faites glisser et déposez la connexion Excel depuis SSIS Toolbox, comme indiqué dans l'image ci-dessous :

Pour configurer la destination Excel, double-cliquez sur Destination Excel. Le gestionnaire de connexion Excel boîte de dialogue s'ouvrira. Dans cette boîte de dialogue, cliquez sur Nouveau comme le montre l'image suivante :

Une autre boîte de dialogue appelée Excel Connection Manager ouvrira. Dans cette boîte de dialogue, nous fournirons un chemin où se trouve le fichier Excel. J'ai créé les données des employés fichier sur mon bureau. Nous allons traverser le système de fichiers et sélectionner le fichier et cliquer sur OK comme indiqué dans l'image ci-dessous :

Maintenant, en mode d'accès aux données dans la liste déroulante, sélectionnez Table ou vue et dans le Nom de la feuille Excel liste déroulante, sélectionnez Australie$, comme indiqué dans l'image ci-dessous :

Maintenant, je vais configurer le chemin de données. Pour ce faire, faites glisser la flèche bleue du chemin de données de la transformation de fractionnement conditionnel vers Employés australiens composant de destination Excel. Lorsque vous connectez le chemin de données à la destination Excel, une boîte de dialogue apparaîtra pour choisir la sortie que nous voulons diriger vers la destination sélectionnée. La boîte de dialogue ressemblera à ceci :

La boîte de dialogue inclut toutes les sorties dans la liste déroulante, qui est disponible à partir de la transformation fractionnée conditionnelle. Dans ce cas, la liste déroulante comprendra deux options.

  1. Australie
  2. Canada
  3. Sortie par défaut

Double-cliquez sur le composant de destination Excel pour mapper les colonnes du tableau avec les colonnes Excel. Pour ce faire, double-cliquez sur le composant de destination Excel et dans l'éditeur de destination Excel boîte de dialogue, sélectionnez le Mappage option située dans le volet gauche de la boîte de dialogue, comme illustré dans l'image ci-dessous :

Dans l'image ci-dessus, Colonne d'entrée est le nom de la colonne de la table Oracle et de la colonne de destination sera le nom de la colonne de la feuille Excel. Dans cette démo, le nom de la colonne du tableau et du fichier Excel sont identiques. Alors Éditeur de destination Excel mappera automatiquement les colonnes d'entrée et de sortie.

De la même manière, je vais répéter le processus de configuration du flux de données pour le Canada chemin des données.

  1. Nous devons sélectionner Canada dans la Sélection Entrée Sortie boîte de dialogue, comme illustré dans l'image ci-dessous.
  2. Dans Excel Destination Edito r, sélectionnez Canada$ dans le Nom de la feuille Excel liste déroulante 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 ressemblera à ceci :

Tester le package SSIS

Exécutons maintenant le package et voyons comment cela a fonctionné. Pour ce faire, cliquez sur Démarrer bouton dans la barre de menus. Si le package termine l'exécution avec succès, il devrait ressembler à ceci :

Comme l'indique l'image ci-dessus, le package a inséré 1 enregistrement dans la région Australie feuille de calcul et 2 enregistrements dans la région du Canada feuille de calcul.

Résumé

Dans cet article, nous avons créé un package SSIS avec un seul flux de données. Nous avons ajouté une transformation de fractionnement conditionnel au flux de données pour diviser les données en plusieurs chemins. Nous avons ensuite dirigé chacun de ces chemins de données vers différentes feuilles de calcul Excel.

Références :

Exporter des données SQL vers plusieurs classeurs d'un fichier Excel.

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.