Mise en œuvre de SQL Server Importation et exportation avec SQL Server Objectif : exporter et importer des données entre SQL Server et des outils bureautique dans un contexte pédagogique. 1. Importation de données C’est une problématique fréquente que de disposer d’un tableau Excel ou d’une base Access dont on souhaite transférer les données sous SQL Server. Ce dernier propose un assistant permettant de réaliser simplement les importations et exportations. Une métaphore de « pompe à données » visualisable graphiquement explique les échanges entre une source et une destination. Nous nous limitons ici aux importations exportation avec Excel et Access. 1.1 Importation de données depuis Excel 1.1.1 Préparation sur Excel On dispose d’une feuille Excel dont on souhaite transférer le contenu dans une base de données. Dans cet exemple, les quatre relations doivent être transférées dans quatre tables. La première étape consiste à nommer les zones concernées (observer que la zone nommée comporte aussi la ligne contenant les noms des colonnes) ; chaque feuille ou zone apparaîtra ainsi comme un objet dont le contenu peut servir à l’importation… Jean-Philippe Pujol 1/9 Mise en œuvre de SQL Server 1.1.2 Importation à partir d’Enterprise Manager On crée tout d’abord une base de données vide de toute table métier, par exemple la base de données « compta ». L’utilisation de l’assistant d’importation va permettre de construire et paramétrer la pompe… …d’abord pour la source de données : on choisit le fournisseur de données « Microsoft Excel 972000 » puis le fichier Excel… …pour la destination de données on choisit le fournisseur (OLE DB pour SQL Server naturellement), le serveur concerné, l’authentification utilisée et la base de destination… …les différents objets présents dans le classeur Excel apparaissent (toutes les feuilles du classeur ainsi que les zones nommées) ; on sélectionne ceux qui doivent être importés… Jean-Philippe Pujol 2/9 Mise en œuvre de SQL Server …il est souhaitable de gérer maintenant la transformation de ces objets en cliquant sur l’icône correspondante dans la colonne Transformer. En effet, si Excel est capable de fournir des indications sur les types des champs, il n’en est pas de même sur les longueurs. Par exemple on précise des tailles et des types de champs différents des valeurs proposées par défaut (ici, on a changé le type du nomClient de nvarchar(255) en varchar(32), et on a indiqué que numero de peut pas prendre de valeur NULL (mal traduit par le terme Annulable) ; il reste à indiquer dans cette copie d’écran que le type de numero est plutôt int que float)… Remarque : la gestion future des clés primaires et étrangères sera facilitée par de judicieuses transformations …le lot d’importation étant défini, il est intéressant de l’enregistrer pour en observer la structure (cocher Enregistrer le lot DTS)… …après la saisie d’un nom pour le lot, l’importation est alors réalisée et le lot est mémorisé. Le lot créé apparaît parmi les lots locaux… Jean-Philippe Pujol 3/9 Mise en œuvre de SQL Server …et son contenu peut être observé, voire modifié : Quant à la base de données, si les tables et leur contenu ont bien été importés, il reste à définir les clés primaires et étrangères. Via le diagramme de la base, les définitions seront simples à faire. L’assistant diagramme compose le schéma initial : Il ne reste qu’à définir les clés et les liens avec la souris : Remarque : l’assistant d’importation n’importe jamais les clés primaires et étrangères (c’est évident pour Excel) ; si les transformations des champs n’ont pas été faites lors de l’importation, il est encore possible de le faire avec SQL Server. L’observation du contenu des tables permet de vérifier le résultat : Jean-Philippe Pujol 4/9 Mise en œuvre de SQL Server 1.2 Importation d’une base Access Le principe d’importation est similaire au précédant, bien que les types et les tailles des champs soient mieux reconnus. Le principal changement porte bien sûr sur le choix du fournisseur de données. Exemple : on dispose d’une base Access dont le fichier de données est nommé bibli2k.mdb Cette base comporte différentes tables : On crée avec Enterprise Manager une base de données vide, par exemple Bibliotheque… …on lance l’assistant d’importation (comme précédemment dans le menu ou avec un clic droit sur la base vide : Toutes les tâches/Importer des données)… …en indiquant que la source de données est « Microsoft Access » puis en sélectionnant le fichier bibli2K.mdb… …pour la destination on prend le fournisseur OLE DB et on fournit l’authentification nécessaire pour l’accès au serveur (ici, le compte sa). On vérifie surtout que la base de destination est bien Bibliotheque (le danger étant d’importer dans une base système)… Jean-Philippe Pujol 5/9 Mise en œuvre de SQL Server …le choix des tables a importer est normalement étendu à l’ensemble des tables présentes… …l’importation des clés primaires et étrangères n’est pas réalisée, cependant les clauses NULL et NOT NULL sont correctement interprétées… …la transformation est utile pour vérifier les types et les longueurs : seuls les types méritent d’être vérifiés, SQL Server choisissant des caractères Unicode ; on changera donc les types nchar en char et nvarchar en varchar. La mise en place des différentes contraintes reste à faire sur le schéma relationnel graphique. Remarque : si la création de clé primaire ou de clé étrangère est refusée, c’est signe que des types de données n’ont pas été correctement transformés. 2. Exportation de données Il est rare qu’une exportation de base SQL Server soit faite vers Access ; il est plus fréquent par contre de vouloir traiter avec Excel des données SQL Server en préférant utiliser les fonctions Excel et la puissance de la recopie plutôt que de recourir à des requêtes SQL. 2.1 Exportation vers Excel Exemple : on dispose d’une base de données SQL Server nommée Butafuel Jean-Philippe Pujol 6/9 Mise en œuvre de SQL Server On crée un nouveau classeur Excel (qui contient par défaut trois feuilles) ; on l’enregistre sur le disque sous le nom importButafuel.xls et surtout on le ferme afin de ne pas perturber l’exportation à venir. Après appel de l’assistant d’exportation, on paramètre la source de données… …le fournisseur OLE DB, les paramètres d’authentification, la base de données… …pour la destination, on choisit Microsoft Excel, et on désigne le fichier précédemment créé.. …on sélectionne le tables à exporter (par défaut, la destination est une nouvelle feuille dans le classeur)… Jean-Philippe Pujol 7/9 Mise en œuvre de SQL Server …l’exportation étant réalisée, les contenus des tables apparaissent dans de nouvelles feuilles. 2.2 Exportation vers Access Exemple : on dispose d’une base de données SQL Server citerne : On commence tout d’abord par créer une base Access vide, citerneAccess… Jean-Philippe Pujol 8/9 Mise en œuvre de SQL Server …après avoir paramétré la source, on paramètre la destination… …on sélectionne les tables que l’on désire exporter (ici, la table essai ne nous intéresse pas et on peut observer que la vue ClientsActuels sous SQL Server pourrait être exportée en tant que table sous Access)… …l’exportation réalisée, il reste à définir les clés primaires (modifier la table) et les clés étrangères (avec le schéma relationnel par exemple). 3. Conclusion Le mécanisme d’importation exportation implémenté sous SQL Server permet pratiquement le transfert de données de toutes les sources vers toutes les destinations. Il est important de bien contrôler et modifier les types de champs avant le transfert. Ceci suppose que la structure des données à transférer soit bien analysée avant toute action. Après transfert, il est généralement indispensable de rétablir les liens entre données. Jean-Philippe Pujol 9/9