2008-11-13 12 views
0

J'ai un package SSIS qui doit rechercher deux types différents de fichiers Excel, de type A et de type B, et charger les données dans deux tables de transfert différentes, tableA et tableB. Les formats de ces feuilles Excel sont différents et correspondent à leurs tableaux respectifs.Comment charger des fichiers Excel de manière sélective?

J'ai pensé à mettre typeA.xls et typeB.xls dans deux dossiers différents pour plus de simplicité (les chemins de dossiers peuvent être configurés). Les fichiers Excel requis seront ensuite placés ici via une autre application ou manuellement. Ce que je veux c'est que mon paquetage dtsx puisse analyser le dossier et choisir le dernier fichier non traité et le charger en ignorant les autres, puis postfixer le nom du fichier avec '-loaded' (typeAxxxxxx-loaded.xls). Le "-loaded" dans le nom de fichier est comment je prévois de faire la différence entre les fichiers déjà chargés et ceux qui doivent encore être chargés.

je besoin de conseils sur:

a) Comment vérifier que le dossier configuré pour le dernier-à-dire de fichiers. sans le '-loaded' dans le nom de fichier et le charger? ..et ensuite après le chargement, renommez le même fichier dans ce dossier configuré avec le '-loaded' postfixed.

b) Est-ce la meilleure approche pour ce faire ou existe-t-il un meilleur moyen?

Merci.

Répondre

1

Vous pouvez le faire de cette façon, mais cela peut nécessiter plusieurs expressions de chaîne complexes.

E.g. créer une boucle ForEach sur les fichiers .xls, ajouter une tâche de script vide dans la boucle, puis un flux de données pour charger ce fichier. Connectez-les avec une contrainte de précédence et rendez-la conditionnelle: l'expression de contrainte de précédence vérifiera si le nom du fichier ne se termine pas par -loaded.xls. Vous pouvez le faire dans une tâche de script ou simplement en utilisant l'expression SSIS sur la contrainte de précédence. Enfin, ajoutez File System Task pour renommer le fichier. Vous devrez peut-être créer un nouveau nom de fichier avec une autre expression.

Il peut être plus facile de créer deux dossiers: entrant pour les nouveaux fichiers non traités, et chargé pour les fichiers que vous avez traités, et déplacez simplement les fichiers .xls dans ce dossier après le traitement sans renommer. Cela évitera la première expression conditionnelle (et la tâche de script fictive) et simplifiera la configuration de la tâche Système de fichiers.

0

Vous pouvez obtenir la tâche Observateur de fichiers SQL et l'ajouter à votre SSIS. Je pense que c'est une façon plus propre de faire ce que vous voulez.

SQL File Watcher

Questions connexes