小编Mag*_*s A的帖子

使用SqlBulkCopy插入GUID

我正在尝试SqlBulkCopy使用SQL Server管理导入导出向导创建的flatfiles中的类进行批量插入.这些文件以逗号分隔.

文件中的一行可能如下所示:

{DCAD82A9-32EC-4351-BEDC-2F8291B40AB3} ,, {ca91e768-072d-4e30-aaf1-bfe32c24008f},900001:1792756,900001:1792757,basladdning,2011-04-29 02:54:15.380000000,basladdning,2011- 04-29 02:54:15.380000000,{20A3C50E-8029-41DE-86F1-DDCDB9A78BA5}

我得到的错误是:

System.InvalidOperationException未处理
Message =数据源中String类型的给定值无法转换为指定目标列的uniqueidentifier类型.

所以问题是从字符串转换为GUID.

我尝试过以下方法:

  • 尝试了不同的编码,UTF8和ANSI
  • 删除了GUIDS周围的{}
  • 添加''围绕GUIDS,有和没有{}

有什么建议?在''是的平面文件中,是一个也有Guid作为数据类型的列.该列为NULL,向导将其导出为''.这可能是问题吗?

代码:

using (var file = new StreamReader(filePath))
using (var csv = new CsvReader(file, false)) 
using (var bcp = new SqlBulkCopy(CreateConnectionString()))
{
    bcp.DestinationTableName = "table";
    bcp.WriteToServer(csv);
}
Run Code Online (Sandbox Code Playgroud)

表定义:

CREATE TABLE [beata].[T_FeatureInstance]( 
    [FeatureInstanceId] [uniqueidentifier] NOT NULL, 
    [FeatureInstanceParentId] [uniqueidentifier] NULL, 
    [FeatureTypeAliasId] [uniqueidentifier] NOT NULL, 
    [Uuid] [varchar](1000) NOT NULL, 
    [VersionId] [varchar](50) NOT NULL, 
    [SkapadAv] [varchar](255) NULL, 
    [Skapad] [datetime] NOT NULL, 
    [UppdateradAv] [varchar](255) NOT …
Run Code Online (Sandbox Code Playgroud)

c# sql-server sqlbulkcopy sql-server-2008

8
推荐指数
2
解决办法
9042
查看次数

标签 统计

c# ×1

sql-server ×1

sql-server-2008 ×1

sqlbulkcopy ×1