2012-02-14 15 views
11

To jest mój kod z następującymi kolumnami, aw DB kolumny te to nvarchars.Nie można wstawić tabeli danych za pomocą 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); 

Próbuję wstawić całą tabelę danych w DB, używając luzem kopię ale ja dostaję ten błąd:

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

+0

Musisz pokazać nam struktury tabel, kod i tak dalej - tylko z tym błędem, nie możemy Ci pomóc ..... - patrz http://tinyurl.com/so-hints –

+0

proszę sprawdzić źródło danych. W źródle mogą być nieprawidłowe dane. –

Odpowiedz

18

To może być spowodowane zbyt krótkim kolumnie . Jeśli twoja kolumna ShortText jest zdefiniowana jako NVARCHAR (30) i masz ciąg 40 znaków, możesz otrzymać ten błąd. Zobacz tutaj na przykład: http://forums.asp.net/p/1228890/2212376.aspx

+0

Bingo! To był mój problem. Dobra wskazówka i przykład komunikatu o błędzie, który nie mówi ci "całej historii". – NateJ

+0

Awesome! Uratowało mi życie;) – Icarus

4

Mam inną odpowiedź na to pytanie, może to może być przydatne dla kogoś. Jeśli masz ciąg znaków, który zawiera " (cudzysłów), pojawi się ten komunikat o błędzie. Przynajmniej dostałem ten komunikat o błędzie i szukałem niewłaściwego wiersza i znalazłem to. Po usunięciu cudzysłowów błąd zniknął.

+0

Spędziłem godziny próbując rozwiązać ten błąd i okazało się, że to on jest winowajcą również dla mnie. Właśnie skopiowałem wszystkie dane z mojej źródłowej bazy danych do arkusza kalkulacyjnego Excela, przeszukałem arkusz pod kątem złego znaku i znalazłem jedno wystąpienie. – Krondorian

+0

Czy istnieje sposób, aby działał z cudzysłowem, lub wstawić go po imporcie? –

Powiązane problemy