3 votes

L'erreur SSIS tronquée a renvoyé le statut 4.

J'essaie d'importer un fichier depuis Excel dans un SQL table . Lorsque je convertis de l'unicode string[DT_WSTR] a string[DT_STR] lors de la conversion des données, j'obtiens une erreur de troncature sur certaines colonnes. Il s'agit d'une erreur de sortie :

[Conversion des données [2]] Erreur : La conversion des données a échoué lors de la conversion de la colonne "Nom du contact" (187) en colonne "DataContactName" (105). La conversion a renvoyé la valeur d'état 4 et le texte d'état "Text was truncated or one or more characters had no match in the target code page.".

Ainsi, le flux de données se termine comme un échec, mais certaines lignes sont copiées vers sql table . Existe-t-il une solution de contournement ou une solution à ce problème ?

1voto

Shareef Points 86

Il semble que la longueur définie pour DataContactName dans la conversion des données soit inférieure à la longueur de "Contact Name". Vérifiez la longueur maximale de la colonne "Nom du contact" et définissez la taille de DataContactName en fonction de celle-ci. Vous voyez quelques lignes insérées parce qu'elles ont pu être insérées avant que les données de plus grande longueur n'arrivent.

1voto

DhruvJoshi Points 11715

Voici ce que vous pouvez faire

  1. Si vous êtes sûr que votre conversion est correcte et qu'Excel ne contient pas de caractères qui sont perdus lors de la conversion en texte non-unicode/ASCII, ce qui n'entraîne pas de troncature, changez votre paramètre d'échec de Failure on error a Ignore on error . Cependant, vous devriez certainement sortir l'erreur et le journal dans un fichier plat pour vérifier les données perdues.
  2. Vérifiez la colonne de la table de données ; est-elle suffisante pour contenir toutes les valeurs possibles du fichier Excel ? Si vous n'êtes pas sûr, essayez de convertir la colonne du tableau en VARCHAR(MAX). Vous ne devriez plus avoir d'erreur de troncature, si elle était due à la taille. Une autre solution consiste à choisir simplement une taille de destination pour VARCHAR(N) où N=2*longueur maximale de la colonne Excel.

Concernant votre commentaire :

J'ai ajouté ignorer les erreurs de troncature dans la sortie d'erreur et toutes les lignes ont été copiées dans la table sql. Il n'y a pas eu de problème pour convertir des caractères comme ; ou "á". Pouvez-vous me dire quel type d'erreurs j'ai ignoré ?

Je vous suggère d'utiliser une transformation Multi-cast sur la sortie d'erreur après avoir modifié le paramètre d'échec à partir de Ignore Failure a Redirect Row . Ensuite, insérez une des sorties de Multi-cast dans le serveur SQL et l'autre dans un fichier plat. De cette façon, vous obtiendrez des données dans le serveur SQL ainsi que dans un fichier plat pour analyser l'erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X