2009-12-04 2 views
0

Le package SSIS est simplement en cours d'importation depuis le fichier txt vers la base de données sql. quand nous avons fait le paquet utilisait ancien fichier et son exécution fine.the ancien fichier source obtenu (10 colonnes) le nouveau fichier source a obtenu 15 colonnes. lorsque le fichier source a changé son échec. [Source fichier plat [1]] Erreur: échec de la conversion de données. La conversion de données pour la colonne "Colonne 10" a renvoyé la valeur d'état 4 et le texte d'état "Le texte a été tronqué ou un ou plusieurs caractères ne correspondaient pas dans la page de codes cible.". Variation dans les colonnes a fait un problème comment résoudre ce mieux? Si les fichiers anciens et nouveaux doivent être traités avec le même package.Echec du package SSIS avec la nouvelle structure du fichier plat

Merci

Répondre

3

Si je comprends bien votre question, vous disposez d'un fichier (même nom de fichier, je suppose) que ce soit a l'ancien ou le nouveau format de fichier et échoue parce que votre source de fichier plat a l'ancienne (10 colonne) schéma de fichier de données seulement? Si c'est le cas, je voudrais créer une variable booléenne et l'appeler quelque chose comme isOldFormat. J'utiliserais alors une tâche de script dans votre flux de contrôle pour déterminer s'il a 10 ou 15 colonnes. Le pseudo-code serait quelque chose comme ceci:

1) Ouvrir fichier plat 2) Compter les colonnes en fonction de votre delimiter 3) Condition statment:

Si columns.Count = 10 isOldFormat = True Else Si des colonnes. Count = 15 isOldFormat = False Else erreur de lancer

Ensuite, je voudrais créer un flux de données qui aurait le nouveau schéma de format de fichier (maintenant, fondamentalement, vous avez deux flux de données-un avec votre ancien format de fichier et l'autre avec le nouveau). Après cette étape, vous devez ensuite faire glisser la contrainte de précédence de votre tâche de script vers le flux de données nouvellement créé et l'autre vers l'ancien flux de données. En double-cliquant sur votre contrainte de prédiction, vous devez ensuite définir la propriété d'opération de l'évaluateur sur Expression et taper dans la case Expression @isOldFormat == true pour la contrainte allant au flux de données contenant l'ancienne source de fichier plat et @isOldFormat == false pour l'autre flux de données. Ce que cela va faire n'exécutera que l'un ou l'autre flux de données basé sur la variable qui est définie dans votre tâche de script.

Espérons que cela aide.

+0

Merci pour Excellent Idea. – rmdussa

Questions connexes