2012-02-14 17 views
11

Este es mi código con las siguientes columnas y en la base de datos, esas columnas son nvarchars.No se puede insertar la tabla de datos usando sqlbulkcopy

SqlBulkCopy bulkCopy = new SqlBulkCopy(connection, 
System.Data.SqlClient.SqlBulkCopyOptions.Default, transaction); 

bulkCopy.DestinationTableName = "Test"; 
bulkCopy.ColumnMappings.Add("Number", "Code"); 
bulkCopy.ColumnMappings.Add("Type", "Type"); 
bulkCopy.ColumnMappings.Add("Group", "Group"); 
bulkCopy.ColumnMappings.Add("Short Text", "ShortText"); 
bulkCopy.ColumnMappings.Add("Text", "Description"); 
bulkCopy.WriteToServer(dataTable); 

Estoy tratando de insertar una tabla de datos entera en una base de datos, utilizando la copia masiva pero estoy consiguiendo este error:

The given value of type String from the data source cannot be converted to type nvarchar of the specified target column.

+0

Deberá mostrarnos algunas estructuras de tabla, código, etc. - solo con ese error, no podemos ayudarle ... - vea http://tinyurl.com/so-hints –

+0

por favor verifique usted fuente de datos. Puede haber datos no válidos en la fuente. –

Respuesta

18

Se puede ser causado por un demasiado corto columna . Si su columna de Texto Corto está definida como NVARCHAR (30) y tiene una cadena de 40 caracteres, puede obtener ese error. Vea aquí por ejemplo: http://forums.asp.net/p/1228890/2212376.aspx

+0

¡Bingo! Este era mi problema. Buen consejo, y un ejemplo del mensaje de error que no te dice la "historia completa". – NateJ

+0

¡Impresionante! Me salvó la vida;) – Icarus

4

Tengo otra respuesta para esta pregunta, tal vez puede ser útil para alguien. Si tiene una cadena que contiene " (comillas), también recibe este mensaje de error. Al menos acabo de recibir este mensaje de error, y busqué la fila incorrecta, y encontré esto. Cuando eliminé las comillas, el error desapareció.

+0

Pasé horas tratando de resolver este error y este resultó ser el culpable para mí también. Acabo de copiar todos los datos de mi base de datos fuente en una hoja de cálculo de Excel, busqué en la hoja el carácter incorrecto y encontré una instancia. – Krondorian

+0

¿Hay alguna manera de hacerlo funcionar con comillas o insertarlas de nuevo después de importarlas? –

Cuestiones relacionadas