Exporter une table SQL Server dans un fichier texte avec SSIS

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.

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');
Créer la table SQL Server et insérer les données à exporter vers le fichier avec SSIS
Créer la table SQL Server et insérer les données à exporter vers le fichier avec SSIS

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];
Vérifier le nombre de lignes insérées dans la table des clients
Vérifier le nombre de lignes insérées dans la table des clients

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.

Ajout d'un flux de données d'export des données au package SSIS
Ajout d’un flux de données d’export au package SSIS

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.

Ajouter la source OLE DB et la destination de fichier plat au flux de données SSIS
Ajouter la source OLE DB et la destination de fichier plat au flux de données SSIS

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.

Utiliser une connexion existante ou en créer une nouvelle avec le gestionnaire de connexions SSIS
Utiliser une connexion existante ou en créer une nouvelle

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]

Sélectionner la connexion et la table des clients à exporter
Sélectionner la connexion et la table des clients à exporter

Cliquer sur le bouton visualiser pour contrôler les données pour l’export.

Prévisualiser et vérifier les données à exporter
Prévisualiser et vérifier les données à exporter

Relier ensuite le composant OLE DB Source avec le composant Flat File Destination avec la flèche.

Relier la source de type base de données avec la destination de type fichier
Relier la source de type base de données avec la destination de type fichier

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.

Créer une nouvelle connexion de fichier plat
Créer une nouvelle connexion de fichier plat

Choisir le type de fichier avec un format délimité, c’est à dire que les colonnes sont séparées par un séparateur.

Choisir le format de fichier délimité
Choisir le format de fichier délimité

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 :

  1. Le nom de la connexion au fichier texte : Customers_Export.csv
  2. Le chemin complet du fichier : C:\data\Customers_Export.csv
  3. L’encodage du fichier : 65001 (UTF-8) pour gérer les caractères spéciaux contenus dans la table
  4. Vérifier le délimiteur d’entête : {CR}{LF}
Configurer la connexion au fichier texte à exporter en CSV
Configurer la connexion au fichier texte à exporter en CSV

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.

  1. Sélectionner Columns
  2. Choisir le délimiteur point-virgule : ;
  3. Vérifier le nom des colonnes.
Choisir le délimiteur des colonnes et des lignes du fichier à exporter
Choisir le délimiteur des colonnes et des lignes du fichier à exporter

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.

Vérifier le mapping entre la table SQL à exporter et le fichier texte
Vérifier le mapping entre la table SQL à exporter et 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.

Exécuter le package SSIS pour exporter les données de la table vers le fichier au format CSV
Exécuter le package SSIS pour exporter les données de la table vers le fichier au format CSV

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.

Fichier texte au format CSV exporté avec le package SSIS
Fichier texte au format CSV exporté avec le package SSIS

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.

Importer un fichier texte dans une base SQL Server avec SSIS

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *