web-dev-qa-db-fra.com

Le texte a été tronqué ou un ou plusieurs caractères ne correspondaient pas dans la page de code cible. Lors de l'importation à partir d'un fichier Excel

J'ai un fichier Excel avec quatre colonnes de texte: l'une d'elles s'appelle ShortDescription, qui a la valeur la plus longue. J'ai créé une table dans la base de données SQL Server 2008, avec quatre colonnes et le type de colonne ShortDescription est défini sur NvarChar (Max).

mais lorsque j'utilise la boîte de dialogue d'importation et d'exportation SSIS, l'erreur mentionnée dans le titre continue à apparaître, même lorsque je règle l'option OnTruncation sur Ignorer.

J'ai essayé d'effacer les données de la colonne et cela a réussi (je me suis donc assuré que le problème se trouvait dans la colonne ShortDescription). J'ai essayé de copier toutes les données dans un autre classeur Excel, sans succès.

des idées ???

56
Nour Sabouny

Je suppose que vous essayez d'importer ceci en utilisant une source Excel dans la boîte de dialogue SSIS?

Si tel est le cas, le problème vient probablement du fait que SSIS échantillonne un certain nombre de lignes au début de votre feuille de calcul lors de la création de la source Excel. Si dans la colonne [ShortDescription] il ne remarque rien de trop grand, il utilisera par défaut une colonne de texte de 255 caractères.

Donc, pour importer des données d'une colonne contenant des lignes contenant de grandes quantités de données sans troncature, il existe deux options:

  1. Vous devez vous assurer que la colonne [ShortDescription] d'au moins une des lignes échantillonnées contient une valeur supérieure à 255 caractères. Pour ce faire, utilisez la fonction REPT (), par exemple. = REPT ('z', 4000), ce qui créera une chaîne de 4 000 caractères de la lettre 'z'.
  2. Vous devez augmenter le nombre de lignes échantillonnées par le pilote Jet Excel pour inclure une telle ligne. Vous pouvez augmenter le nombre de lignes échantillonnées en augmentant la valeur de TypeGuessRows sous la valeur HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel (de si votre système est x64 puis sous le HKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel) clé d'enregistrement.

Vous pouvez voir plus d'informations sur ces deux liens:

Pour plus d'explications, SSIS crée 3 objets dans les coulisses de l'Assistant, un objet source de données Excel, un objet de destination de table SQL et un opérateur de flux de données entre eux. L'objet source Excel définit les données source et existe indépendamment des deux autres objets. Donc, quand il est créé, l'échantillonnage que j'ai décrit est terminé et la taille de la colonne source est définie. Ainsi, au moment où l'opérateur de flux de données s'exécute et tente d'extraire les données d'Excel pour les insérer dans votre table, une source de données déjà limitée à 255 caractères a déjà été analysée.

66
TetonSig

J'ai eu ce problème lors de l'importation à partir d'un fichier plat délimité dans SQL Server. La solution consistait à mettre à jour la valeur 'OutputColumnWidth' pour la colonne incriminée (à partir du message d'erreur). Dans le formulaire "Choisir une source de données" de l'assistant d'importation, la source était le fichier plat. Dans le volet le plus à gauche, choisissez "Avancé". Vous pouvez ensuite définir les propriétés des colonnes individuelles. Dans mon cas, le paramètre "OutputColumnWidth" pour la plupart de mes colonnes était défini par défaut sur "50". Je l'ai simplement mis à jour avec une valeur plus grande qui ne tronquerait pas la valeur du fichier plat.

enter image description here

33
Dean

J'ai eu cette erreur lorsque j'essayais d'importer un fichier volumineux contenant des caractères chinois, ainsi que des chaînes non valides (grandes).

Le fichier texte a été enregistré au format UTF8.

Mes paramètres:

Sur l'option générale (n'a rien changé):

- Locale: English (United States) 
- Unicode: Unchecked
- Code Page: 65001 (UTF-8)

Il y a une option avancée à gauche

- DataType (for column): Unicode String [DT_WSTR] (changed)
- OutputColumnWidth: 4000 (that's the maximum) (changed)

Sur la correspondance de type de données de revue

- On Error: Ignore
- On Truncation: Ignore

Ma colonne cible avait une largeur = 50.

Je n'ai aucune erreur avec ces paramètres.

6
live-love

Pour moi, ce lien m'a aidé: https://support.Microsoft.com/en-us/kb/189897

  1. Copiez la ligne dont la valeur de cellule est supérieure à 255 caractères au début du fichier Excel. Faites de cette ligne la première ligne du fichier Excel.
  2. changer la valeur de registre à partir du lien ci-dessus.
1
Jaydeep Shil

Un autre emplacement du composant de registre doit être modifié pour résoudre ce problème.

Si vous ne pouvez pas le trouver à

Démarrer–> Exécuter–> RegEdit–> HKEY_LOCAL_MACHINE\LOGICIEL\Microsoft\Jet\4.0\Engines\Excel

alors regarde dedans

Démarrer–> Exécuter–> RegEdit–> HKEY_LOCAL_MACHINE -> LOGICIEL -> Wow6432Node -> Microsoft -> Jet -> 4.0 -> Moteurs -> Excel

1
Charles Mulwa