【发布时间】:2018-12-11 08:39:11
【问题描述】:
我需要将数据从一个表复制到另一个表。 我收到一条消息异常:
来自数据源的String类型的给定值不能 转换为指定目标列的uniqueidentifier类型",
因为我有 GUID 数据类型的列。
我的代码...
using (SqlConnection destinationConn = new SqlConnection("Data Source = ''; Initial Catalog = ''; Persist Security Info = True; User ID = ''; Password = ''; MultipleActiveResultSets = true"))
{
using (SqlBulkCopy bc = new SqlBulkCopy(destinationConn))
{
bc.DestinationTableName = "Animal";
destinationConn.Open();
bc.ColumnMappings.Add("guid", "guid"); //UniqueIdentifier
bc.ColumnMappings.Add("Name", "Name");
bc.WriteToServer(dt); //DATA TABLE object
}
}
我该如何解决这个问题?
【问题讨论】:
-
错误很明显。您尝试将
stringDataTable 列插入uniqueidentifier表列。数据表列的类型应该是 Guid -
除此之外,如果没有重现问题的代码,就无法提供帮助。不知何故,某处创建了一个字符串列。您如何创建该 DataTable?
-
看一下this issue,可能你的问题和那个相似或相同。
-
GUID 列中的所有值是否都是有效的 GUID?即以意外方式格式化的空白值、非 GUID 字符串或 GUID 可能会导致问题。最后一句话,我的意思是传统上 GUID 将包含 4 个连字符;如果连字符丢失 SQL 可能不接受该值。您可以选择将字符串包裹在大括号中,并且值不区分大小写。
标签: c# sql-server sqlbulkcopy