Question

package SSIS est juste importé du fichier txt à la base de données SQL. lorsque nous avons fait le paquet utilisait ancien fichier et son exécution fine.The fichier source ancienne a (10 colonnes) le nouveau fichier source a 15 colonnes. lorsque le fichier source a changé son échec. [Source Flat File [1]] Erreur: La conversion des données a échoué. La conversion de données pour la colonne « Colonne 10 » renvoyée Valeur d'état 4 et le texte statut « texte a été tronqué ou un ou plusieurs caractères ont pas de correspondance dans la page de code cible. ». Variation dans les colonnes a un problème comment résoudre ce d'une meilleure manière? Si les anciens et les nouveaux fichiers de format doivent être traités avec la même paquet.

Merci

Était-ce utile?

La solution

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 uniquement? Si tel est le cas, je créerais une variable booléenne et appelle quelque chose comme isOldFormat. Je voudrais ensuite utiliser une tâche de script dans votre flux de contrôle pour déterminer si elle 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 Sinon si columns.Count = 15    isOldFormat = False Autre   erreur de lancer

Alors je voudrais créer un autre 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, alors vous faites glisser la contrainte de priorité de votre tâche de script pour les données nouvellement créé flux et un à l'ancien flux de données. En double cliquant sur votre contrainte predence, vous définissez la propriété de fonctionnement évaluateur à l'expression et le type dans la zone Expression @isOldFormat == true pour la contrainte allant du flux de données qui contient l'ancienne source de fichier plat et @isOldFormat == false pour l'autre flux de données. Ce que cela fera ne fera exécuter un ou l'autre flux de données sur la base variable définie dans votre tâche de script.

Espérons que cela aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top