2012-02-14 14 views
11

Đây là mã của tôi với các cột sau và trong DB, các cột đó là nvarchars.Không thể chèn bảng dữ liệu bằng cách sử dụng 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); 

Tôi cố gắng để chèn một bảng dữ liệu toàn bộ trong một DB, sử dụng bản sao số lượng lớn nhưng tôi nhận được lỗi này:

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

+0

Bạn sẽ cần hiển thị cho chúng tôi một số cấu trúc bảng, mã và vv - chỉ với lỗi đó, chúng tôi không thể giúp bạn ..... - xem http://tinyurl.com/so-hints –

+0

vui lòng kiểm tra bạn nguồn dữ liệu. Có thể có dữ liệu không hợp lệ trong nguồn. –

Trả lời

18

thể được gây ra bởi một quá ngắn cột . Nếu cột ShortText của bạn được định nghĩa là NVARCHAR (30) và bạn có một chuỗi ký tự 40, bạn có thể gặp lỗi đó. Xem ở đây ví dụ: http://forums.asp.net/p/1228890/2212376.aspx

+0

Bingo! Đây là vấn đề của tôi. Mẹo hay và ví dụ về thông báo lỗi không cho bạn biết 'toàn bộ câu chuyện'. – NateJ

+0

Tuyệt vời! Đã cứu mạng tôi;) – Icarus

4

Tôi có một câu trả lời khác cho câu hỏi này, có lẽ nó có thể có ích cho ai đó. Nếu bạn có một Chuỗi có chứa " (dấu ngoặc kép), bạn cũng nhận được thông báo lỗi này. Ít nhất tôi vừa nhận được thông báo lỗi này, và tôi đã tìm kiếm hàng sai, và tôi thấy điều này. Khi tôi loại bỏ các dấu ngoặc kép, lỗi đã biến mất.

+0

Tôi đã dành hàng giờ cố gắng giải quyết lỗi này và điều này hóa ra là thủ phạm đối với tôi. Tôi vừa sao chép tất cả dữ liệu từ cơ sở dữ liệu nguồn của tôi vào bảng tính Excel, tìm kiếm trang tính cho ký tự xấu và tìm thấy một ví dụ. – Krondorian

+0

Có cách nào để làm cho nó hoạt động với dấu ngoặc kép, hoặc chèn chúng trở lại sau khi nhập bằng cách nào đó? –