web-dev-qa-db-fra.com

L'assistant d'importation SQL Server échoue avec un message incompréhensible

Je veux juste importer deux colonnes d'un fichier plat dans une nouvelle table. J'ai défini une colonne, "Code", pour être varchar(50), et une autre colonne, "Description", pour être nvarchar(max).

L'importation échoue avec les messages suivants:

- Executing (Error)
Messages
Error 0xc02020a1: Data Flow Task 1: Data conversion failed. The data conversion for column "Description" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.".
 (SQL Server Import and Export Wizard)

Error 0xc020902a: Data Flow Task 1: The "output column "Description" (14)" failed because truncation occurred, and the truncation row disposition on "output column "Description" (14)" specifies failure on truncation. A truncation error occurred on the specified object of the specified component.
 (SQL Server Import and Export Wizard)

Error 0xc0202092: Data Flow Task 1: An error occurred while processing file "C:\Users\rinaldo.tempo\Desktop\ICD10_Edition4_CodesAndTitlesAndMetadata_GB_20120401.txt" on data row 3.
 (SQL Server Import and Export Wizard)

Error 0xc0047038: Data Flow Task 1: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED.  The PrimeOutput method on component "Source - ICD10_Edition4_CodesAndTitlesAndMetadata_GB_20120401_txt" (1) returned error code 0xC0202092.  The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing.  There may be error messages posted before this with more information about the failure.
 (SQL Server Import and Export Wizard)

Le message d'erreur me suggère que les données sont tronquées car elles sont placées dans la colonne "Description" qui est de type nvarchar(max)! Après avoir observé les données d’entrée, je dirais que les descriptions n’ont jamais plus de 2 ou 300 caractères. C’est donc hors de question.

Quelqu'un peut-il suggérer ce qui ne va pas ici?

13
David

La taille par défaut des colonnes de chaîne dans l'importation est de 50 caractères. Cette troncature se produit avant que les données ne soient transférées dans votre base de données. Vous devez l’ajuster à la première étape de l’Assistant d’importation, dans la section Columns.

30
Marcel N.

L'erreur

"Le texte a été tronqué ou un ou plusieurs caractères ne correspondaient pas à la page de code cible."

peut se produire MÊME lorsque votre fichier à plat source est un fichier Unicode et votre colonne cible est définie par nvarchar(max).

SSIS déduit les types de données dans le fichier source en analysant un nombre limité de lignes et en en faisant une supposition éclairée. En raison de ses tentatives répétées pour le faire fonctionner, il a parqué les métadonnées pour le type de données OutputColumnWidth à 50 caractères quelque part au cours du processus, provoquant ainsi une troncature interne au package.

Examinez les métadonnées dans l'onglet "Avancé" de la source de données pour résoudre le problème.

2
Raj

J'ai aussi reçu ce message en essayant de charger une table de 275 colonnes. Peu importe ce que je faisais, je ne pouvais pas faire passer le message. Changer de colonne à la fois était vraiment difficile. Corrigez un, obtenez une erreur dans un autre. De plus, certains ne semblent pas réparer.

Ensuite, j'ai supprimé tous les caractères ":" et "," du fichier source délimité par des tabulations, et tout s'est bien chargé.

0
David Andrews

vous pouvez aussi essayer ceci.

sélectionnez toutes les colonnes nvarchar comme Dt_NTEXT dans la tabulation avancée, puis dans la conversion de données, sélectionnez DT_WSTR (Unicode_String) pour la colonne alias pour tous les champs de données Nvarchar

Cela a fonctionné pour moi :). L'essayer 

0
user3217761