Ce tutoriel explique comment charger plusieurs fichiers textes avec SSIS. Pour commencer, tous les fichiers textes (.txt, .csv, etc…) doivent se trouver dans le même dossier, idéalement.
Cette intégration automatique utilise des variables dynamiques et permet d’intégrer de nombreux fichiers ayants la même structure en même temps et avec le même flux de données.
Pour ce faire, utiliser une boucle SSIS, c’est à dire le composant SSIS Foreach Loop Container.
Ce package utilise les mêmes composants que le package du tutoriel précédent pour importer un seul fichier plat dans une table SQL. C’est donc le même flux de données qui est utilisé, mais avec des variables dans le chemin du fichier, qui devient donc dynamique.
Table of Contents
1. Télécharger les fichiers à charger et créer la table (Premium)
Tout d’abord, télécharger les trois fichiers d’exemple.
Tout d’abord, pour accéder à nos ressources et bien plus encore, inscrivez-vous à notre formation SSIS Complète disponible sur Udemy.
La formation est disponible en Anglais.
Les fichiers sont stockés par exemple comme ceci, dans le même dossier:
- C:\Data
- Customers_Data_1.csv
- Customers_Data_2.csv
- Customers_Data_3.csv
Ensuite, créer la table de destination. La table utilise la même structure que le tutoriel pour charger un fichier plat, et remplit une colonne avec le chemin complet du fichier.
Ce script est également disponible en tant que contenu Premium, inscrivez-vous à notre formation SSIS Complète disponible sur Udemy.
2. Créer une boucle SSIS pour charger les fichiers textes
Premièrement, utiliser une boucle depuis l’onglet control flow. Sélectionner ensuite le conteneur dynamique Foreach Loop Container et le faire glisser sur l’espace de travail.
3. Créer une variable SSIS pour gérer le nom des fichiers
Créer une variable nommée FlatFilePath de type String au niveau du package. Pour afficher les variables, cliquer sur le package et appuyer sur F4 ou faire un clic-droit dans le flux de données.
Paramétrer la connexion au fichier plat comme détaillé dans ce tutoriel avec un flux de données pour charge un fichier plat. C’est le même principe mais cette fois le flux de données permet de charger plusieurs fichiers textes avec un seul package SSIS.
Modifier ensuite l’expression ConnectionString utiliser la variable dynamique au lieu du chemin en dur.
Utiliser la variable créée avant pour qu’a chaque passage dans la boucle, le nom de fichier soit dynamique.
4. Configurer le conteneur de boucle Foreach File SSIS
Double-cliquer ensuite sur la séquence Foreach Loop Container. Dans l’onglet Collection :
- Choisir le dossier dans lequel se trouvent les fichiers plats : C:\Data
- Indiquer ensuite le nom des fichiers plats à charger avec SSIS : Customers_Data*.csv
- Choisir le nom complet du fichier avec le chemin : Fully qualified
Puis, dans l’onglet Variable Mappings, relier la variable FlatFilePath à l’index 0. Cette liaison transmet de manière dynamique le nom du fichier en cours à la variable et donc à la connexion au fichier.
5. Ajouter le nom du fichier CSV dans une colonne dérivée
Ajouter les deux colonnes dérivées suivantes pour:
- Ajouter le numéro de client au format Entier
- Ajouter le nom du fichier source depuis la variable dynamique
6. Exécuter le package SSIS pour importer les fichiers CSV
Maintenant, lancer le chargement. Le package SSIS charge les fichiers plats dans la base de données n par un, soit un flux de données exécuté par fichier détecté dans le dossier source.
En cliquant dans le data flow, on note que 16 lignes sont intégrées à chaque itération.
7. Vérifier les données importées avec SSMS
Vérifier enfin les résultats avec les 2 requête SQL suivantes. Le résultat est donc cohérent avec 16 lignes intégrées pour chaque fichier source, sans erreurs.
SELECT [Filename], COUNT(*) FROM [dbo].[Customers_with_filename] GROUP BY [Filename]; SELECT * FROM [dbo].[Customers_with_filename];
Conclusion sur l’import de fichiers CSV avec SSIS
Pour importer des fichiers dans une table de manière automatisée et pour éviter les erreurs, d’une manière générale, il est primordial de contrôler l’encodage des fichiers textes à intégrer.
Soyez le premier à commenter