2016-07-27 2 views
0

J'ai un dossier qui contient les fichiers comme:Comment lire plusieurs fichiers plats dynamiques dans la nature d'un seul coup dans SSIS

A_ddmmyyyy, b_ddmmyyyy and c_ddmmyyyy. 

Je dois lire tous ces fichiers pour une date et encore une fois tous ces fichiers pour la prochaine date présente dans le même dossier. Le nombre de fichiers présents dans le dossier varie également (peut contenir des données pour trois jours ou cinq dates), mais la date sur le dossier reste la même.

Est-ce possible?

Répondre

0

Vous pouvez créer un Foreach Loop Container. Dans le conteneur, créez une tâche de flux de données qui traite tous les fichiers d'un dossier spécifique. Vous créez une connexion de fichier plat avec le délimiteur requis et une variable qui a le chemin d'accès au dossier pour vos fichiers. Et puis, en tant que dernière étape de vos tâches, créez une tâche de système de fichiers pour déplacer le fichier vers un dossier traité ou terminé afin que votre dossier principal se vide une fois les fichiers traités.

+0

Thnx Jason, mais les données présentes dans chaque fichier sont différentes –

+0

Donc, si vous dites que les fichiers doivent être traités dans l'ordre, A d'abord, puis B puis C, pour une date particulière. Créez un conteneur Loop Foreach qui enregistre les noms de fichiers dans une table, puis appliquez votre logique pour parcourir la liste des fichiers à traiter et de l'ordre (via SQL ou via Tri de la transformation dans ssis). Ce conteneur est exécuté en premier, puis le conteneur Loop Foreach I mentionné ci-dessus deuxième. –

+0

Si vous dites que les fichiers doivent être traités dans des tables différentes en fonction des noms de fichiers, existe-t-il une convention de nommage convenue afin que vous puissiez choisir quels fichiers vont à quelle table? Si tel est le cas, créez un conteneur de boucle Foreach qui stocke les noms de fichier dans une table, puis appliquez votre logique pour parcourir la liste des fichiers à traiter dans leurs tables associées (via SQL ou via Tri de transformation dans ssis). Ce Conteneur est exécuté d'abord, puis le Conteneur Loop Foreach que je mentionne à l'origine ci-dessus, en second lieu. –

0

Nom de fichier n'a pas d'importance, vous devez être certain combien de types de schémas (nombre de colonnes, noms de colonnes, types) de fichiers dans le dossier. Disons que vous avez 3 schémas, alors vous devrez définir 3 types de connexions de fichiers à plat. Il y a plusieurs façons de faire le travail, le plus simple est d'utiliser PowerShell pour séparer les fichiers de différents schémas dans différents dossiers, vous devez savoir quels noms de fichiers sont mappés sur quel schéma, il peut y avoir un modèle ou un business règle. Vous mettez ensuite votre PowerShell dans une tâche de processus d'exécution pour exécuter le script. Ensuite, ce qui suit est simple, pour chaque dossier que vous créez un paquet, l'intérieur est un pour chaque conteneur où vous bouclez le dossier pour charger chaque fichier. Ou vous pouvez avoir un paquet avec trois pour chaque conteneur de boucle pour faire le travail.