2013-04-03 3 views
0

Si je me cogne la tête sur mon bureau 1 fois plus de temps je pourrais être parti pour toujours.Problème de conversion de datetime SSIS entre Excel et SQL Server

Source: Excel

données: 2012-10-05T11: 14: 00

Conversion:

2012-10-05T11: 14: 00 dans Excel pour string [DT_STR]

Destination: SQL

colonne type de données: datetime

I continuer à obtenir les erreurs suivantes:

[PostBindInspectionsBucket [20]] Erreur: Code d'erreur SSIS 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 10.0" Hresult: 0x80004005 Description: "Valeur de caractère non valide pour la spécification de conversion". Erreur: Une erreur est survenue dans la colonne d'entrée "Copy of RequestTimestamp" (112) sur l'entrée "OLE DB Destination Input" (33). 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.".

[PostBindInspectionsBucket [20]] Erreur: Code d'erreur SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. L'entrée de destination OLE DB "entrée" (33) "a échoué car le code d'erreur 0xC0209077 s'est produit et la disposition de la ligne d'erreur" Entrée "OLE DB Destination Input" (33) "indique l'échec de l'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. La méthode ProcessInput sur le composant "PostBindInspectionsBucket" (20) a échoué avec le code d'erreur 0xC0209029 lors du traitement de l'entrée "OLE DB Destination Input" (33). 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.

Qu'est-ce que je fais mal? le format provenant d'Excel est un format datetime valide.

J'ai créé une table avec une colonne de type "datetime" et j'ai ensuite collé dedans "2012-10-05T11: 14: 00" et cela a bien fonctionné.

J'ai aussi couru un

SELECT ISDATE('2012-10-05T11:14:00') 

et il est de retour 1, ce qui signifie qu'il est un datetime valide dans SQL.

Quelqu'un sait quel pourrait être le problème?

+0

À quel type de données la colonne d'Excel correspond-elle? Que se passe-t-il si vous le formatez spécifiquement en tant que général ou texte dans Excel? Je me méfie que le formatage Excel cache la valeur sous-jacente réelle dans Excel. Où voyez-vous cette date source? Dans Excel ou dans un navigateur de données dans SSIS?Que se passe-t-il si vous enregistrez votre fichier Excel au format CSV, l'inspectez pour vérifier qu'il s'agit effectivement du format des données et que vous l'importez? Vous pouvez être en mesure de dire que je ne fais pas confiance à Excel. –

+0

Importez-le également dans un champ VARCHAR plutôt que DATETIME pour inspecter à nouveau la véritable nature des données. Aussi, j'ai seulement utilisé un format de date _without_ le désignateur T (un espace à la place) lors de l'insertion dans les tableaux. –

+0

@ElectricLlama Le formatage Excel cache presque toujours une valeur sous-jacente réelle, en particulier avec des dates ou des valeurs qu'Excel peut interpréter comme des dates. –

Répondre

0

Le problème ici était le "T". J'ai retiré le T de la chaîne qu'il a traversée.

Questions connexes