Assistant d'import SQL Server échoue avec un message incompréhensible

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

L'import é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 postd before this with more information about the failure. (SQL Server Import and Export Wizard) 

Le message d'erreur me suggère que datatables sont tronquées car elles sont placées dans la colonne 'Description', qui est de type nvarchar(max) ! Ayant regardé datatables d'input, je dirais que les descriptions ne dépassent jamais 2 ou 300 caractères, donc c'est hors de question.

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

La taille par défaut des colonnes de string, dans l'import, est de 50 caractères. Cette troncature se produit avant que datatables ne parviennent à votre database. Vous devez ajuster cela dans la première étape de l'Assistant d'import, dans la section Columns .

L'erreur

"Le text était tronqué ou un ou plusieurs caractères ne correspondaient pas dans la page de codes cible."

peut se produire même lorsque votre file plat source est un file Unicode et que votre colonne cible est définie comme nvarchar(max) .

SSIS déduit les types de données dans le file source de l'parsing d'un nombre limité de lignes et de faire une supposition éclairée. En raison des tentatives répétées sans fin pour le faire fonctionner, il a garé les métadonnées pour le type de données OutputColumnWidth à 50 caractères quelque part, provoquant la troncature interne au package.

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

Vous essayez aussi ceci.

select toutes les colonnes nvarchar comme Dt_NTEXT dans le TAB avance, puis dans la conversion de données, select DT_WSTR (Unicode_Ssortingng) pour la colonne Alias ​​pour tous les Nvarchar données Nvarchar .

Cela a fonctionné pour moi :). Essayez-le

J'ai aussi reçu ce message en essayant de charger une table de 275 colonnes. Peu importe ce que j'ai fait, je n'ai pas réussi à faire passer le message. Changer une colonne à la fois était vraiment difficile. Fixez-en un, obtenez une erreur dans un autre. Plus certains ne sembleraient pas réparer.

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