1

J'ai un fichier Excel que j'importe chaque semaine dans une table. J'utilise Excel 2010 et SSMS 2012. L'importation a échoué cette semaine et je n'ai pas pu déterminer pourquoi. J'ai réussi à importer les données dans une nouvelle table. Les définitions de table de la nouvelle table correspondent à celles de mon ancienne table, ce qui ne semble pas être le problème. Voici une capture d'écran de l'erreur que je reçois. J'ai vérifié le champ de texte d'en-tête PO et il n'y a rien qui dépasse le type de données de varchar (255) que je l'ai comme. En outre, j'ai trié les données juste pour voir si une certaine ligne causait le problème et plus de données ont inséré, mais j'ai toujours l'erreur et il n'était pas sur la même ligne que la tentative d'importation originale. J'ai même laissé tomber et ai encore créé la table originale et je reçois toujours l'erreur.Utilisation de l'Assistant Importation pour importer des données Excel dans une table dans SQL Server 2012 échouant - troncature de texte

enter image description here

+0

Comment avez-vous vérifié la longueur des colonnes? Si ce n'est pas tronqué, pourrait-il être l'autre option qu'il vous donne, que vous avez des caractères étranges là-dedans? Vous pourriez essayer de changer la colonne dans la table de destination en 'NVARCHAR (MAX)'? – Bridge

+0

Si tel était le cas, pourquoi la nouvelle table donnerait-elle la colonne varchar (255) lors de l'utilisation de l'assistant d'import? J'ai également fait un len() dans Excel sur cette colonne et n'ai rien reçu au-dessus de 100 caractères. – tsqln00b

+1

@ tsqln00b Test simple tri des lignes par colonne de texte descendant dans le fichier Excel, enregistrer et exécuter. Si cela fonctionne, cela signifie que dans vos 8 premiers enregistrements, il n'y avait que du texte court et que la reconnaissance de type échouait. – lad2025

Répondre

2

Le problème est probablement la manière dont Import/Export Wizzard ou SSIS obtenir des métadonnées sur les types de données.

Il utilise les premières lignes. S'il y a une chaîne longue (plus de 255) alors le type de données est memo, sinon c'est une chaîne. Une solution de contournement consiste à trier les lignes Excel en fonction de la longueur de la colonne de texte décroissante.

De Excel Source

texte tronqué. Lorsque le pilote détermine qu'une colonne Excel contient des données de texte, le pilote sélectionne le type de données (chaîne ou mémo) en fonction de la valeur la plus longue échantillonnée. Si le pilote ne trouve aucune valeur supérieure à 255 caractères dans les lignes qu'il échantillonne, il traite la colonne comme une colonne de 255 caractères au lieu d'une colonne mémo.

Par conséquent, les valeurs plus de 255 caractères peuvent être tronqués Pour importer des données à partir d'une colonne mémo sans troncature, vous devez vous assurer que la colonne mémo dans au moins une des lignes échantillonnées contient une valeur plus de 255 caractères, ou vous devez augmenter le nombre de lignes échantillonnées par le pilote pour inclure une telle ligne.

Vous pouvez augmenter le nombre de lignes échantillonnées en augmentant la valeur de TypeGuessRows sous la clé de Registre HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Excel. Pour plus d'informations, consultez PRB: transfert de données à partir de la source OLEDB Jet 4.0 échoue avec erreur.