无法使用sqlbulkcopy插入数据表

时间:2012-02-14 07:33:49

标签: c# sqlbulkcopy

这是我的代码,包含以下列,在数据库中,这些列为nvarchars

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);

我正在尝试使用批量复制在数据库中插入整个数据表,但我收到此错误:

  

数据源中String类型的给定值无法转换为指定目标列的nvarchar类型。

2 个答案:

答案 0 :(得分:18)

可能是由太短的列引起的。如果您的ShortText列定义为NVARCHAR(30)并且您有一个40个字符的字符串,则可能会出现该错误。例如:http://forums.asp.net/p/1228890/2212376.aspx

答案 1 :(得分:4)

我对这个问题有另一个答案,也许它可以派上用场。如果您有一个包含"(引号)的字符串,您也会收到此错误消息。至少我刚收到此错误消息,我搜索了错误的行,我发现了这个。当我删除引号时,错误消失了。