2010-07-08 7 views
0

Je suis Tring pour créer un package SSIS pour importer des fichiers dataset, mais étant donné que je semble être frapper un mur de briquesSSIS aptitude

chaque fois que je réalise une petite partie de la tâche que je dois faire un pas en arrière et effectuer une vérification de bon sens sur ce que je suis

essayant d'atteindre, et si vous les bonnes gens peuvent conseiller si SSIS est le moyen d'aller à ce sujet alors je

apprécier.

Ce sont mes questions de ce matin: -

debugging SSIS packages - debug.writeline

Changing an SSIS dts variables

Ce que je suis en train de faire est d'avoir un conteneur For..Each énumèrent sur les fichiers dans un partage sur le serveur SQL. Pour chaque

fichier

il trouve une tâche de script est exécuté pour vérifier divers attributs du nom de fichier, tels que la recherche d'une trois lettres

code, une date SSAAMM, le nom des données qui y sont contenues, et éventuellement certains commentaires. Par exemple: -

ABC_201007_SalesData_ [commentaire facultatif va ici] .csv

Je cherche à analyser le nom en utilisant une expression régulière et de mettre les valeurs de 'ABC', ' ', et

' SalesData 'dans les variables.

Je veux ensuite déplacer le fichier dans un dossier d'erreur si elle ne répond pas à certains critères: -

  • Trois codes de caractères
  • Six Date de caractère
  • nom de dataset (par exemple SalesData, en cet exemple)
  • extension CSV

Je veux alors rechercher le code de caractère, la date (ou une partie de celle-ci), et Nom de l'ensemble de données par rapport à une table de correspondance

pour marquer une liste de contrôle des fichiers reçus de chaque client. Puis, en fonction de l'entrée dans la liste de contrôle, je veux lancer un autre paquet SSIS.

Ainsi, par exemple, je peux avoir une table appelée « liste de contrôle » avec ces colonnes: -

Client code  Dataset   SSIS_Package 
    ABC   SalesData  NorthSalesData.dtsx 
    DEF   SalesData  SouthSalesData.dtsx 

Si quelqu'un a une meilleure façon d'y parvenir, je suis intéressé à entendre parler.

Merci à l'avance

Répondre

3

C'est un scénario intéressant, et devrait être relativement facile à gérer. D'abord, votre choix de Foreach Loop est un bon choix. Vous utiliserez l'énumérateur de fichiers Foreach. Vous pouvez restreindre les fichiers que vous parcourez à des fichiers CSV afin de ne pas avoir à les "filtrer" plus tard. L'énumérateur de fichiers Foreach place le nom de fichier (chemin d'accès complet ou nom de fichier) dans une variable - appelons cela "FileName". Il y a (au moins) deux façons d'analyser cela: des expressions ou une tâche de script. Cela dépend de laquelle vous êtes le plus à l'aise. De toute façon, vous devrez créer trois variables pour contenir les "parties" du nom de fichier - je les appellerai "FileCode", "FileDate", et "FileDataset". Pour cela, avec les expressions, vous devez définir la propriété EvaluateAsExpression sur FileCode, FileDate et FileDataset sur true. Ensuite, dans les expressions, vous devez utiliser FINDSTRING et SUBSTRING pour découper FileName comme bon vous semble. Les expressions n'ont pas de capacité Regex. Pour cela, dans une tâche de script, transmettez la variable FileName en tant que variable ReadOnly et les trois autres en ReadWrite. Vous pouvez utiliser les fonctionnalités Regex de .Net, ou simplement utiliser manuellement IndexOf et Substring pour obtenir ce dont vous avez besoin.

+0

Est-ce toujours une variable définie par l'utilisateur? –