2010-10-27 23 views
2

Je l'insertion de données dans SQL 2005 en utilisant SQLXMLBulkLoad.SQLXMLBulkload.3.0valeur de caractère non valide pour la spécification de cast

Mon tableau de données est suivant la colonne: objDataTable.Columns.Add("TaskDateTime", System.Type.GetType("System.DateTime"))

Mon gros schéma d'insertion a la définition suivante: <xsd:element name="DepartureTime" type="xsd:date" /> (En utilisant xmlns: xsd = "http://www.w3.org/2001/XMLSchema")

Et je reçois 'Valeur de caractère non valide pour la spécification de cast' excep tion.

Un conseil?

+0

Le problème est avec 'T' dans le fichier XML temporaire. La date est stockée en tant que 2010-01-01T12: 29 + 00: 00 Si je change le XML en 2010-01-01 12: 29 + 00: 00 et exécute, il s'exécute avec succès. –

Répondre

3

Résolu !.

type de colonne changé par: objDataTable.Columns.Add ("TaskDateTime", System.Type.GetType ("System.DateTime")) à objDataTable.Columns.Add ("TaskDateTime", System.Type. GetType ("System.String")

et je stocke ma valeur en tant que .ToString ("aaaa-MM-jj HH: mm") + ": 00 + 00: 00" dans le tableau de données. lors de la création d'un fichier XML sur le disque, il l'écrit simplement en tant que chaîne et le fichier de schéma pour l'insertion en bloc le lit en tant que datetime.

+0

Si vous utilisez SQLXML pour créer votre schéma de base de données à partir d'un XSD, modifiez les éléments XSD dateTime en chaîne et exécutez. Malheureusement, SQL Server (ou .NET d'ailleurs) ne gère pas les chaînes de date/heure ISO 8660-1 très rapidement. C'est toujours très utile pour une construction de schéma à 80% avec une intervention manuelle par la suite. – ssamuel

1

Le problème réside dans les espaces dans les colonnes source ... c'est ce qui provoque la valeur de caractère non valide pour la spécification de cast.