2017-10-18 12 views
1

droite, j'ai donc une boucle foreach avec un flux de données allant à l'intérieur par un groupe de fichiers avec tout le même format exact. Cela modifie un certain nombre de choses avec une colonne dérivée qui est tout transféré dans une base de données SQL Server qui deviendra ma table de transfert.SSIS erreur de boucle Foreach sur les fichiers CSV

Le problème est que certains fichiers vomissent une erreur, même si les fichiers sont tous formatés de façon identique, l'erreur est toujours autour de la date. Il passera par 4 fichiers sans problème, puis sur le 5ème fichier, il cesse de fonctionner.

Que suis-je en train de faire?

  • Je veux obtenir un tas de fichiers avec le même format et de mettre les données à l'intérieur dans une base de données SQL en changeant certains formats.

Qu'ai-je essayé de faire?

  • J'ai essayé de reformater la date à jj/mm/aaaa qui est le format que je veux la date d'avoir de toute façon. Le reformatage a travaillé mais sur le même fichier qui avait des erreurs avant qu'il est venu avec une erreur de casting de type.

C'est l'erreur que je reçois: [OLE DB Destination [59]] Erreur: SSIS Code d'erreur DTS_E_OLEDBERROR. Une erreur OLE DB s'est produite. Code d'erreur: 0x80004005. Un enregistrement OLE DB est disponible. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "Valeur de caractère non valide pour la spécification de conversion".

[OLE DB Destination [59]] Erreur: Il y avait une erreur avec OLE DB Destination.Inputs [Destination OLE DB entrée] .Columns [Montant] sur OLE DB Destination.Inputs [OLE DB utilisant une entrée de destination]. L'état de la colonne retournée était: "La valeur n'a pas pu être convertie en raison d'une perte potentielle de données.".

[OLE DB Destination [59]] Erreur: Code d'erreur SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Le "OLE DB Destination.Inputs [OLE DB entrée de destination]" a échoué parce que le code d'erreur 0xC0209077 a eu lieu, et la disposition de la ligne d'erreur sur "OLE DB Destination.Inputs [OLE DB Destination d'entrée]" indique l'échec en cas d'erreur. Une erreur s'est produite sur l'objet spécifié du composant spécifié. Il peut y avoir des messages d'erreur affichés avant cela avec plus d'informations sur l'échec.

* [SSIS.Pipeline] Erreur: Code d'erreur SSIS DTS_E_PROCESSINPUTFAILED. Procédé ProcessInput sur le composant "OLE DB Destination" (59) a échoué avec le code d'erreur 0xC0209029 alors que l'entrée de traitement "OLE DB Destination Input" (72). Le composant identifié a renvoyé une erreur de la méthode ProcessInput. L'erreur est spécifique au composant, mais l'erreur est fatale et provoque l'arrêt de la tâche de flux de données. Il peut y avoir des messages d'erreur affichés avant cela avec plus d'informations sur l'échec. Il est déjà arrivé avant et je me suis débrouillé en créant une nouvelle boucle foreach pour gérer les nouveaux fichiers avec le nouveau format (je ne pouvais pas voir de changement dans le format mais je l'ai fait pour continuer).

Ceci est le format du flux de données: enter image description here

Ceci est l'image de la colonne dérivée enter image description here

Toute aide serait grandement appréciée! Si vous avez besoin de clarifier quoi que ce soit, faites le moi savoir.

+0

Il semble se référer à une autre colonne: 'Columns [Amount]'. Quelle est cette colonne? –

+0

C'est une colonne de devise, et je viens de vérifier à nouveau pour s'assurer qu'il n'y a pas de différence de formatage entre le fichier qui fonctionne et celui qui ne fonctionne pas –

+0

Qu'est-ce qu'un exemple de valeur de devise qui réussit? –

Répondre

2

Vos colonnes semblent être dans des ordres différents. Je l'ai remplacé les pattes avec des tuyaux et obtenu les éléments suivants:

travail:

Staffordshire County Council|Staffordshire County Council Other|247 Cars Willenhall Ltd 15/06/2017|1126.97|Transport - Escorts|Transport - Escorts|opendatacommunities.org/id/county-council/staffordsh‌​ire 

ne fonctionne pas:

Staffordshire County Council|Childrens Services SEND|247 Cars Willenhall Ltd|273.42|06/07/2017|Transport - Escorts|Transport - Escorts opendatacommunities.org/id/county-council/staffordsh‌​ire 

Dans la première date est de l'autre côté du montant, et semble être inclus dans la chaîne "247 Cars Willenhall Ltd". Si vous activez la visionneuse de données en cliquant avec le bouton droit sur la flèche entre les deux derniers composants et en sélectionnant l'option, vous obtenez une vue claire de l'impact de votre flux de données (lors de l'exécution/du débogage du package).

+0

Merci, est-ce que j'ai juste besoin de changer les en-têtes dans le fichier CSV ou quoi que ce soit d'autre pour le faire fonctionner? –

+0

Eh bien, quel que soit le chemin que vous prenez, vous aurez juste besoin d'assurer la cohérence entre les fichiers, donc les mêmes colonnes dans le même ordre, avec le délimiteur que vous choisissez (onglet dans ce cas). Ce qui est intéressant à propos de cet exemple est que les montants semblent avoir été dans le 4ème champ les deux fois, mais cela a été l'erreur (au moins celle que vous avez posté). Il serait intéressant d'exécuter la visionneuse de données pour voir exactement ce qui se passait. –

+0

Ok, donc j'ai essayé de l'éditer en Excel en échangeant tout dans le bon endroit et toujours pas aller. Les mêmes erreurs se produisent exactement. Je pensais à coup sûr que cela aurait été la cause! –