Exporter des données depuis une table SQL Server vers un fichier texte au format CSV avec SSIS.
Ce tutoriel explique comment exporter le contenu d’une table depuis une base de données SQL vers un fichier texte avec SSIS. Exporter au format TXT ou au format CSV avec SSIS, qui propose de nombreuses options. En effet, l’outil décisionnel SSIS est parmi leader depuis plusieurs années dans le domaine des ETL, car présent sur le marché IT depuis des décennies et reconnu par les grandes entreprises.
Table of Contents
Tutoriel SSIS pour exporter une table SQL dans un fichier CSV
Avec l’import, l’export de données est une des tâches classiques. Cela permet par exemple de mettre à disposition des données à jour pour une autre application tierce. Et donc de communiquer à travers l’entreprise. Un package SSIS d’export de données basique se compose de trois éléments principaux :
- Un flux de données SSIS qui contient :
- Un composant OLE DB Source pour la source de données, une table SQL Server.
- Le composant Flat File Destination pour la cible de l’export, c’est un fichier CSV.
1. Préparer la table SQL Server à exporter et le fichier cible
Avec SSMS, créer la table des clients. Puis insérer les 24 lignes suivantes dans la table à exporter. Ce jeu de données d’exemple sert à faire fonctionner le package avec un résultat concret.
-- Créer la table des clients CREATE TABLE [dbo].[Customers]( [CustomerID] [int] NOT NULL, [FirstName] [nvarchar](20) NULL, [LastName] [nvarchar](20) NULL, [City] [nvarchar](20) NULL, [Country] [nvarchar](50) NULL, CONSTRAINT [CustomersPrimaryKeyCustomerID] PRIMARY KEY CLUSTERED ([CustomerID] ASC) ); GO -- Insérer 24 lignes avec les données des clients INSERT INTO [dbo].[Customers] VALUES (1, N'Ali', N'Ahmed', N'Cairo', N'Egypt'); INSERT INTO [dbo].[Customers] VALUES (2, N'Johnny', N'John', N'Toronto', N'Canada'); INSERT INTO [dbo].[Customers] VALUES (3, N'John', N'Doe', N'Mexico City', N'Mexico'); INSERT INTO [dbo].[Customers] VALUES (4, N'Shu', N'Abbas', N'Paris', N'France'); INSERT INTO [dbo].[Customers] VALUES (5, N'Jeane', N'Raffin', N'Liushutun', N'China'); INSERT INTO [dbo].[Customers] VALUES (6, N'Legra', N'Leate', N'Błaszki', N'Poland'); INSERT INTO [dbo].[Customers] VALUES (7, N'Sullivan', N'Goadby', N'Xiaoguwei', N'China'); INSERT INTO [dbo].[Customers] VALUES (8, N'Tom', N'Ellams', N'Lop Buri', N'Thailand'); INSERT INTO [dbo].[Customers] VALUES (9, N'Trace', N'Fowell', N'Sriwing', N'Indonesia'); INSERT INTO [dbo].[Customers] VALUES (10, N'Christoffer', N'Rochford', N'Mburukullu', N'Indonesia'); INSERT INTO [dbo].[Customers] VALUES (11, N'Dru', N'Dunridge', N'Mistrató', N'Colombia'); INSERT INTO [dbo].[Customers] VALUES (12, N'Dud', N'Gravenor', N'Sandaogou', N'China'); INSERT INTO [dbo].[Customers] VALUES (13, N'Lori', N'Garshore', N'Jeziora Wielkie', N'Poland'); INSERT INTO [dbo].[Customers] VALUES (14, N'Cordy', N'Kentish', N'Vydreno', N'Russia'); INSERT INTO [dbo].[Customers] VALUES (15, N'Ancell', N'Wileman', N'Claresholm', N'Canada'); INSERT INTO [dbo].[Customers] VALUES (16, N'Elsworth', N'Chantrell', N'Sumberjo', N'Indonesia'); INSERT INTO [dbo].[Customers] VALUES (17, N'Beverly', N'Giraudy', N'Cigembong', N'Indonesia'); INSERT INTO [dbo].[Customers] VALUES (18, N'Tamas', N'Zavattiero', N'Jangkat', N'Indonesia'); INSERT INTO [dbo].[Customers] VALUES (19, N'Benedick', N'Schaffler', N'Itaparica', N'Brazil'); INSERT INTO [dbo].[Customers] VALUES (20, N'Leonard', N'Brimman', N'Moscow', N'Russia'); INSERT INTO [dbo].[Customers] VALUES (21, N'Morton', N'Capelle', N'Uk', N'Russia'); INSERT INTO [dbo].[Customers] VALUES (22, N'Larissa', N'Rawle', N'Tembayangan Barat', N'Indonesia'); INSERT INTO [dbo].[Customers] VALUES (23, N'Karalee', N'Wall', N'Clifden', N'Ireland'); INSERT INTO [dbo].[Customers] VALUES (24, N'Miller', N'Shakesbye', N'Gongnong', N'China');
Vérifier que les 24 lignes sont présentes dans la base avec une requête de sélection simple ou un comptage avec la fonction d’agrégation COUNT.
SELECT COUNT(*) AS [LINES] FROM [dbo].[Customers];
Exécuter aussi une requête de sélection pour vérifier les lignes et leur cohérence.
SELECT * FROM [dbo].[Customers];
2. Créer le package et le flux de données SSIS
Premièrement, ouvrir Visual Studio et créer un nouveau projet SSIS. Puis ouvrir un package existant ou en créer un nouveau. Ensuite, depuis la Boîte à outils SSIS, sélectionner Data flow Task et le faire glisser dans l’espace de travail puis double cliquer dessus.
3. Configurer le composant OLE DB Source et la table à exporter
Maintenant, depuis l’onglet Data Flow, sélectionner le composant SSIS OLE DB Source. Et depuis une base de données SQL Server, le bloc OLE DB Source est recommandé dans ce cas. Sélectionner aussi le composant Flat File Destination et le faire glisser sur l’espace de travail. Dans ce cas, c’est un export de fichier au format CSV, dans un répertoire précis.
4. Configurer la table source OLE DB
Utiliser une connexion à une base de données existante ou en créer une nouvelle avec le gestionnaire de connexions SSIS. Sélectionner ensuite la connexion.
Dans la fenêtre OLE DB Source Editor, choisir la base et la table SQL Server à exporter dans le fichier texte avec SSIS : [dbo].[Customers]
Cliquer sur le bouton visualiser pour contrôler les données pour l’export.
Relier ensuite le composant OLE DB Source avec le composant Flat File Destination avec la flèche.
Une fois la table source SQL Server configurée, la deuxième partie du tutoriel consiste à relier les deux composants SSIS et à configurer le fichier texte en sortie.
5. Paramétrer la connexion au fichier de destination
Créer une nouvelle connexion de fichier plat en destination avec l’éditeur graphique.
Choisir le type de fichier avec un format délimité, c’est à dire que les colonnes sont séparées par un séparateur.
Sélectionner maintenant le type de fichier dans lequel exporter les données, dans ce cas c’est un fichier plat avec une extension CSV. Paramétrer les éléments suivants :
- Le nom de la connexion au fichier texte : Customers_Export.csv
- Le chemin complet du fichier : C:\data\Customers_Export.csv
- L’encodage du fichier : 65001 (UTF-8) pour gérer les caractères spéciaux contenus dans la table
- Vérifier le délimiteur d’entête : {CR}{LF}
Pour le nom de fichier, depuis l’onglet General. Cliquer sur Browse et choisir l’emplacement du fichier texte à exporter avec SSIS. S’il n’existe pas, entrer simplement un chemin et le package Integration Services créé le fichier à l’exécution du package.
6. Configurer les colonnes cibles à exporter
Cliquer ensuite sur l’onglet Columns et choisir le type de délimiteur pour les colonnes et les lignes.
- Sélectionner Columns
- Choisir le délimiteur point-virgule : ;
- Vérifier le nom des colonnes.
Vérifier ensuite le mapping des colonnes, par défaut, SSIS mappe automatiquement les colonnes et créée des colonnes de même type, de même longueur et de même nom pour le fichier texte.
7. Exécuter le package pour exporter la table dans le fichier CSV
Exécuter maintenant le package d’export de données avec le bouton Lecture situé sur le menu haut. Ou appuyer sur F5, vérifier au préalable que le package soit défini comme objet de démarrage dans les paramètres du projet. L’export des données commence alors de la table source vers le fichier texte cible au format CSV. 24 lignes sont exportées sans erreurs.
8. Vérifier l’exécution du package et le résultat dans le fichier
Après exécution, les données de la table des clients stockées dans la base SQL Server sont exportées et disponibles sous forme de fichier texte. Ouvrir maintenant le fichier et vérifier le résultat et la cohérence des données entre la table et le fichier.
Conclusion sur l’export de données en CSV avec SSIS
Enfin, ce tutoriel SSIS explique comment créer un package SSIS pour exporter une table MS SQL dans un fichier texte, au format CSV, délimité par un point-virgule. SSIS facilite grandement la tâche car le mapping est automatique et la gestion de l’export est assez ergonomique.
Autres tutoriels sur l’export de données avec SSIS
Le tutoriel SSIS suivant explique comment réaliser l’opération inverse, c’est à dire importer un fichier CSV dans une table SQL Server avec SSIS.
Soyez le premier à commenter