可以';t使用sqlbulkcopy插入数据表

本文关键字:sqlbulkcopy 插入 数据表 使用 可以 | 更新日期: 2023-09-27 18:24:19

这是我的代码,包含以下列,在DB中,这些列是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。

可以';t使用sqlbulkcopy插入数据表

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

这个问题我有另一个答案,也许对某人有用。如果您有一个包含"(引号)的字符串,您也会收到此错误消息。至少我刚刚收到了这个错误消息,我搜索错了行,我找到了这个。当我去掉引号时,错误就消失了。