2010-06-18 3 views
0

Est-il possible d'abandonner le traitement d'une ligne dans la méthode ProcessInputRow? Je fais des validations de données avec les données CSV entrantes dans cette fonction. Je définis les valeurs de ligne dans un sous-marin. Si une erreur se produit, je vais l'attraper dans le processus ProcessInputRow et commencer à écrire les données dans une table de transfert pour une approbation ultérieure. Tout fonctionne bien. Le problème est que la ligne avec les mauvaises données est toujours écrite dans la table cible.Annuler le traitement de Row dans la méthode ProcessInputRow?

E.g. J'ai une ligne avec une valeur de chaîne 99-02-2010 que j'essaie d'ajouter comme CDate à une colonne de date comme ceci:

Row.ChangeDate = CDate (rowValues.GetValue (0) .ToString()) '= > jette une exception

Comme dit l'exception est levée et traitée par moi en écrivant la ligne dans ma table de transit. Mais je ne peux pas trouver un moyen d'arrêter le traitement de cette ligne par la tâche de script. Des idées?

concernant

Répondre

0

Enfin réussi. C'est maintenant une combinaison de [1] et [2]. J'ai dû ajouter les lignes de sortie à la main à ma sortie nouvellement créée. Ensuite, j'ai été en mesure de mapper la table pour les lignes invalides. Maintenant, j'ai une sortie pour les lignes valides et une pour les lignes invalides. J'affecte les valeurs de données de ligne dans le script et les dirige vers la sortie correspondante.

Il est un peu étrange de mettre en caisse toutes les colonnes à la main. Mais finalement, ça fonctionne comme il se doit. Facile si vous savez comment. Merci pour votre contribution.

[1] http://agilebi.com/cs/blogs/jwelch/archive/2007/05/08/handling-flat-files-with-varying-numbers-of-columns.aspx

[2] http://consultingblogs.emc.com/jamiethomson/archive/2005/09/05/SSIS-Nugget_3A00_-Multiple-outputs-from-a-synchronous-script-transform.aspx

1

Créer une nouvelle sortie dans votre tâche de script et acheminez les mauvaises lignes à la sortie d'erreur (avec l'ajout d'une colonne/description du message d'erreur approprié). Puis acheminez les vers n'importe quelle autre table que vous voulez utiliser.

+0

Ce n'est pas vraiment possible. J'ai dû utiliser cette solution [1] pour traiter mes données CSV. Le problème ici est maintenant que la sortie créée doit être synchronisée avec le SynchronousInputId de l'entrée. Mais mon entrée a seulement une ligne comme vous pouvez le voir dans le billet de blog. Pour cette raison, je ne peux pas lier une donnée à la sortie nouvellement créée parce que je ne peux pas mapper de champs. [1] http://agilebi.com/cs/blogs/jwelch/archive/2007/05/08/handling-flat-files-with-varying-numbers-of-columns.aspx – pantarhei

Questions connexes