2016-04-29 2 views
0

J'ai cherché sur Internet ce que je pensais être une question simple à répondre. J'espère que vous pouvez aider?SSIS 2008 - ForEach Loop pour regarder un groupe/une liste de fichiers spécifiques

J'utilise pour chaque boucle pour rechercher des fichiers spécifiques et les déplacer avec la tâche du système de fichiers dans un dossier différent.

Disons que j'ai 10 fichiers CSV. appelé listé A à J

Je veux seulement déplacer a, e et j mais ne peux pas sembler obtenir le foreachloop pour rechercher ce groupe.

Dans la zone de texte Fichiers de l'énumérateur, j'ai essayé d'insérer les 3 noms de fichiers divisés par différents séparateurs, mais SSIS pense qu'il s'agit d'un fichier spécifique et qu'aucun des 3 n'est déplacé.

Quelqu'un peut-il conseiller comment cela peut-il être fait? Juste pour confirmer, je ne d'utiliser la logique de wild card juste de groupe de noms de fichiers spécifiques - similur à la fonction IN de requête SQL

Merci à l'avance

now added img - please advise how to slect 3 specific files in the text box with arrow

+0

Il est préférable de montrer effectivement le code que vous avez essayé plutôt que le décrivant. – NoChinDeluxe

+1

Placez les noms de fichiers que vous voulez faire défiler dans un objet SSIS. Utilisez ensuite un conteneur ForEach pour déplacer uniquement ces fichiers. – freakyhat

+0

NoChinDeluxe - J'ai maintenant ajouté l'image à la demande - montrant la boîte de texte où j'essaie plusieurs versions de la sélection d'un groupe de fichiers – mlinden80

Répondre

1

Puisque OP n'est pas en mesure de procéder avec juste mon commentaire, je vais vous expliquer un peu plus en détail -

  1. Utilisez un EXECUTE SQL TASK pour vider les noms des fichiers nécessaires dans un objet SSIS (pour ce faire, vous pouvez utiliser une procédure stockée ou une requête SQL). Créez une variable de type objet dans l'onglet Variables précédent, modifiez la sortie dans EXECUTE SQL TASK en Full Result Set et mappez le résultat à l'objet que vous venez de créer. Maintenant, cet objet contient la liste des fichiers que vous devez parcourir.
  2. Glissez-déposez un conteneur ForEach depuis la boîte à outils SSIS. Il devrait être configuré comme ForEach ADO Enumerator et mapper l'objet. Créez une autre variable de type chaîne qui contiendra les noms de fichiers après chaque itération du conteneur ForEach. Mappez-le également dans l'onglet Variables du conteneur ForEach.
  3. Maintenant, placez le File System Task que vous utiliseriez pour déplacer ces fichiers dans la boucle ForEach. Utilisez la variable de nom de fichier que vous avez créée pour déplacer uniquement les fichiers requis.

Maintenant, si vous n'êtes pas sûr de ce que la requête SQL à utiliser pour votre cas à l'étape 1 pour obtenir les noms de 3 fichiers -

SELECT 'A.csv' 
UNION 
SELECT 'E.csv' 
UNION 
SELECT 'J.csv' 
+0

Donc, juste pour confirmer. En utilisant la zone de texte (voir img sur OP) du ForEachLoop où j'utiliserais normalement * .csv. Je ne peux pas simplement lister les 3 fichiers là-bas? – mlinden80

+0

Pas que je sache. J'ai vu seulement les caractères génériques utilisés dans la zone de texte que vous mentionnez. Tout ce que vous saisissez ici sera considéré comme le nom du fichier, donc sans un caractère générique, ce sera juste un fichier et le point entier d'un conteneur 'ForEach' est perdu. – freakyhat

+0

Merci. J'ai essayé vos étapes, mais obtenez une erreur sur l'objet de tâche d'exécution SQL. Variable d'objet créée appelée objet. Création d'une tâche sql exécutée avec un ensemble de résultats complet.J'enverrai une capture d'écran d'erreur, quand je serai de retour à la maison. Pouvez-vous fournir une capture d'écran de la tâche d'exécution SQL, toto assurez-vous que j'ai tout fait correctement? – mlinden80