Les erreurs de troncature de l'importation de SQL Server 2005 à partir d'Excel

pour faire court, je prends un tas de documents excel un par un, et je les importe en utilisant L'Assistant Import/Export dans une base de données dans SQL Server 2005.

voici un rapport (tous les processus non représentés sont un "succès"). Est-il possible pour moi d'ignorer les erreurs de troncature? J'ai googlé autour vain, ou au moins pas dans ma version.

- Executing (Success)

- Copying to [Datadev].[dbo].[Sheet0$] (Error)
  Messages
  * Error 0xc020901c: Data Flow Task: There was an error with output

colonne " Valeur Signification Description" (234) sur la sortie "Excel Source Output" (9). Colonne le statut retourné a: "Le texte a été tronqué ou un ou plusieurs les personnages avaient pas de correspondance dans la cible code de la page.". (SQL Server Assistant Importation et Exportation)

  * Error 0xc020902a: Data Flow Task: The "output column "Value

Signification Description" (234)" échec parce que la troncature s'est produite, et le disposition de la ligne de troncature sur la sortie colonne " Valeur Signification Description" (234) " spécifie la défaillance troncature. Une erreur de troncation s'est produite sur l'objet spécifié de le composant spécifié. (Importation de Serveur SQL et Assistant d'Exportation)

  * Error 0xc0047038: Data Flow Task: SSIS Error Code

DTS_E_F_PRIMEOUTPUTFAILED. Le Méthode PrimeOutput sur les composants "Source - Sheet0$" (1) code 0xC020902A. La composante renvoie un code de défaillance lorsque le moteur de pipeline appelé PrimeOutput (). La signification du code de défaillance est défini par le composant, mais l' l'erreur est fatale et le pipeline arrêté d'exécution. Il peut y avoir d'erreur messages postés avant avec plus informations sur l'échec. (SQL Assistant D'importation et D'exportation du serveur)

  * Error 0xc0047021: Data Flow Task: SSIS Error Code

DTS_F_THREADFAILED. Fil "SourceThread0" est sorti avec erreur code 0xC0047038. Il peut y avoir d'erreur messages postés avant avec plus informations sur pourquoi le fil a quitter. (SQL Server Assistant Importation et Exportation)

  * Error 0xc0047039: Data Flow Task: SSIS Error Code

DTS_E_THREADCELLED. Fil "WorkThread0" a reçu un arrêt d'urgence signal et se termine. Utilisateur demandé un arrêt, ou une erreur dans un autre thread est à l'origine du pipeline à l'arrêt. Il peut y avoir d'erreur messages postés avant avec plus informations sur la raison pour laquelle le fil a été annuler. (SQL Server Assistant Importation et Exportation)

  * Error 0xc0047021: Data Flow Task: SSIS Error Code

DTS_F_THREADFAILED. Fil "WorkThread0" est sorti avec erreur code 0xC0047039. Il peut y avoir d'erreur messages postés avant avec plus informations sur pourquoi le fil a quitter. (SQL Server Assistant Importation et Exportation)

- Post-execute (Success)
  Messages
  * Information 0x402090df: Data Flow Task: The final commit for the

l'insertion des données a commencé. (SQL Server Assistant Importation et Exportation)

  * Information 0x402090e0: Data Flow Task: The final commit for the

l'insertion des données est terminée. (SQL Server Assistant Importation et Exportation)

- Cleanup (Success)
  Messages
  * Information 0x4004300b: Data Flow Task: "component "Destination -

Sheet0$ "(323) " a écrit 210 lignes. (SQL Server Assistant Importation et Exportation)

15
demandé sur Andomar 2009-06-24 20:15:26

7 réponses

l'assistant utilise une valeur plus petite que celle que vous avez obtenue dans L'assistant de SQL Server 2000. En conséquence, il souvent tronque les données que vous essayez de faire un rapide importer dans une table intermédiaire. Toutefois, lorsque vous ne l'assistant, un écran vous demande si vous souhaitez modifier les mappages et vous pouvez fixer la taille des champs. Ou vous pouvez utiliser un étament de table d'abord pour créer une table de travail avec les tailles que vous voulez (nvarchar(max) est bon si vous regardez les données pour la première fois et n'ont aucune idée de la taille du champs) et puis les importer dans. Avec Excel, je sais que J'ai aussi eu des problèmes avec SQl Server en n'utilisant que quelques lignes pour déterminer le type de données et ensuite l'insert échouant pour les enregistrements (par exemple pour quelque chose comme partnumber) parce qu'il pensait basé sur les premiers enregistrements qu'il était un entier quand il était vraiment un type de données chaîne. Vous pourriez également avoir un problème comme celui-ci, il est donc une bonne idée de revoir les mappings de toute façon, même si vous n'obtenez pas les erreurs de troncature.

8
répondu HLGEM 2012-01-03 15:42:28

quand j'obtiens des erreurs de troncature, j'insère 8 lignes fictives. Chaque cellule a un texte indésirable d'une longueur > 256. Cela force le type de données détecté à être varchar(max) au lieu de varchar (256). Si une ligne est une colonne de nombre, je dois la remplir avec un nombre (par exemple, 0) et si c'est une date, je dois remplir une date fictive ou bien les colonnes seront importées avec des données nulles.

j'efface alors ces rangées de rebuts après l'importation.

15
répondu Francis Huang 2011-10-28 21:44:16

Voici ce qui a fonctionné pour moi.

ceci est dû à un merveilleux réglage dans Excel dans votre registre qui lui dit de vérifier seulement les 8 premières rangées de données dans votre tableur pour déterminer la taille de la colonne pour le reste de toutes les données. Le correctif pour ce qui est de modifier votre base de registre pour définir à partir de 8 à 0. Quand il est mis à 0 il vérifiera le tableur entier. Cela peut causer des problèmes de performance lors de l'importation initiale des données si le fichier est extrêmement grande. Voici la clé de Registre à rechercher (il peut y en avoir plus d'une qui doit être définie):

Tapeguessrows

5
répondu Shaul Behr 2013-07-01 09:57:49

http://support.microsoft.com/kb/281517

pour changer la valeur de TypeGuessRows, utilisez ces étapes: 1.Dans le menu Démarrer, cliquez sur Exécuter. Dans la boîte de dialogue Exécuter, tapez Regedt32, puis cliquez sur OK. 2.Ouvrir la clé suivante dans l'éditeur du registre:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet \ 4.0\Engines\Excel

Remarque: Pour les systèmes 64 bits, la clé correspondante est comme suit:

HKLM\SOFTWARE\wow6432node\microsoft\jet \ 4.0\engines\excel 3.Double-cliquez sur "Tapeguessrows". 4.Dans la boîte de dialogue DWORD editor, cliquez sur Décimal sous Base. Tapez une valeur entre 0 et 16, inclusivement, pour les données de valeur. 5.Cliquez sur OK, puis quittez L'Éditeur du registre. Une deuxième façon de contourner ce problème (sans modifier le registre) est de s'assurer que les lignes avec des champs, qui ont les données 255 caractères ou plus, sont présents dans les 8 premières lignes du fichier de données source.

4
répondu Suji 2014-01-20 11:21:33

Pourquoi voulez-vous ignorer les erreurs? Pourquoi ne pas les trouver et les corriger?

en tout cas, si vous avez besoin de faire plus que ce que l'Assistant fournit, alors vous devriez utiliser SSIS (SQL Server Integration Services) directement. C'est ce que l'assistant utilise, mais il ne peut pas supposer que les erreurs sont correctes.

il est très simple d'écrire un paquet SSIS pour boucler vos fichiers Excel et les importer un à la fois. Le flux de données d'importation peut être configuré soit pour ignorer les erreurs, soit pour faire quelque chose d'autre avec eux, comme leur rapport.

1
répondu John Saunders 2009-06-24 16:23:16

pour les importations occasionnelles de données Excel, CSV ou texte dans SQL Server où des erreurs de troncature sont expérimentées, je suggérerais d'importer les données dans MS Access d'abord et ensuite en utilisant l'Assistant up-sizing pour créer et peupler la table directement dans SQL.

1
répondu mikelus 2013-05-14 14:02:53

Dans SQL Server Assistant d'Importation dès que vous arrivez à la section où vous devez spécifier le fichier que vous utilisez pour importer des données cliquez sur l'onglet "Avancé". Cela vous montrera tous les champs de votre fichier d'entrée ainsi que les propriétés du champ. La propriété que vous devez changer est "DataType". Il est généralement par défaut " string[DT_STR]". Si vous le changez en "text stream[DT_TEXT]" vous augmenterez considérablement la taille du champ et donc éviterez très probablement la troncature erreur.

0
répondu user3357094 2016-01-12 02:18:29