由GUID导致的不兼容性

时间:2017-07-13 17:08:39

标签: sql-server ssis

我有flatfile,它有一个字段accountid(例如:123123123)。

我需要将我在平面文件中的accountid导入数据库,在数据库中它也被命名为accountid(uniqueidentifier,null)(它是一个GUID唯一标识符)

尝试将平面元数据更改为唯一标识符,但收到错误。

  

[平面文件源[2]]错误:数据转换失败。数据   列的转换"帐户ID"返回状态值2和状态   text"由于潜在的损失,该值无法转换   数据。&#34 ;. [平面文件源[2]]错误:SSIS错误代码   DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 "平面文件   Source.Outputs [平面文件源输出] .Columns [帐户ID]"失败   因为发生错误代码0xC0209084,并且错误行处置   on" Flat File Source.Outputs [Flat File Source Output] .Columns [Account   ID]"指定错误失败。指定的错误发生   指定组件的对象。可能会发布错误消息   在此之前,有关失败的更多信息。

2 个答案:

答案 0 :(得分:0)

我会通过将您的平面文件导入到具有AccountId的varchar数据类型的Staging表来解决此问题。

然后调用存储过程将数据从登台表复制到最终目标,并使用TRYPARSE()AccountId列转换为GUID。然后,您将能够处理AccountId列中没有有效GUID但不会丢失行的行。

答案 1 :(得分:0)

创建用于将源帐户ID存储为整数的字段。将具有生成的GUID ID(如何Create a GUID column in SSIS)的派生列添加到源数据中,并将其用作目标中的主键。

如果您尝试导入具有相同错误消息的GUID值:

  

[平面文件源[2]]错误:数据转换失败。列“ AccountId”的数据转换返回状态值2和状态文本“由于潜在的数据丢失,无法转换该值。” ...

或(俄语相同):

  

[平面文件源[177]]错误:Ошибкапреобразованияданных。 Припреобразованииданныхдлястолбца “ACCOUNTID” возращенозначениесостояния2итекстсостояния “Невозможнопреобразоватьзначениеиз-завозможнойпотериданных。”

     

[平面文件源[177]]错误:消息SSIS:DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 Сбой平面文件Source.Выводы[Выходисточника “Неструктурированныйфайл”]。Столбцы[ACCOUNTID]из-завозникновенияошибкискодом0xC0209084,истратегияобработкиошибокстрокв“平面文件Source.Выводы[Выходисточника “Неструктурированныйфайл”]。Столбцы [accountid]“определяетсбойпоошибке。 Ошибкавозниклавуказанномобъектеуказаннооокомпонента。 Возможно,доэтогобылиопубликованысообщенияобошибках,

双重检查GUID值是否带有花括号。此CSV会引发错误:

ReqType;accountid;contactid;
0;6E0DAA5D-CB68-4348-A7B2-AD2367190F83;FFA9D382-D534-4731-82A0-D9F36D8221B0;

这将被处理:

ReqType;accountid;contactid;
0;{6E0DAA5D-CB68-4348-A7B2-AD2367190F83};{FFA9D382-D534-4731-82A0-D9F36D8221B0};