2012-02-14 20 views
11

Questo è il mio codice con le seguenti colonne e nel DB, quelle colonne sono nvarchars.Impossibile inserire la tabella dati utilizzando 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); 

Sto cercando di inserire una tabella di dati intero in un DB, utilizzando la copia di massa, ma sto ottenendo questo errore:

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

+0

Avrai bisogno di mostrarci alcune strutture di tabelle, codice e così via - solo con quell'errore, non possiamo forse aiutarti ..... - vedi http://tinyurl.com/so-hints –

+0

per favore controlla fonte dati. Ci potrebbero essere dati non validi nella fonte. –

risposta

18

E possono essere causato da una troppo breve colonne . Se la colonna di ShortText è definita come NVARCHAR (30) e hai una stringa di 40 caratteri, potresti ottenere quell'errore. Vedi qui per esempio: http://forums.asp.net/p/1228890/2212376.aspx

+0

Bingo! Questo era il mio problema. Un buon consiglio, e un esempio del messaggio di errore che non ti dice l '"intera storia". – NateJ

+0

Fantastico! Salvato la mia vita;) – Icarus

4

Ho un'altra risposta a questa domanda, forse può tornare utile per qualcuno. Se si dispone di una stringa contenente " (virgolette), viene visualizzato anche questo messaggio di errore. Almeno ho appena ricevuto questo messaggio di errore, e ho cercato la riga sbagliata, e ho trovato questo. Come ho rimosso le virgolette, l'errore è scomparso.

+0

Ho passato ore a cercare di risolvere questo errore e questo è risultato essere il colpevole anche per me. Ho appena copiato tutti i dati dal mio database di origine in un foglio di calcolo di Excel, ho cercato il foglio per il carattere errato e ho trovato un'istanza. – Krondorian

+0

C'è un modo per farlo funzionare con le virgolette, o inserirli di nuovo dopo l'importazione in qualche modo? –

Problemi correlati