SSIS主键和Guids

时间:2013-09-16 11:31:17

标签: ssis

我有一个简单的CSV文件,我导入。我编写了一个脚本任务来完成它。我的目的地需要一个主键列,所以我在代码中添加了它。

但现在我开始用平面文件源做同样的事情。但是,我发现some sources表示派生列无法创建ID或Guid列。

唯一可能的解决方法是在导出时编写TSQL语句以添加Guid或使用脚本组件。

这是真的吗? 派生列转换真的不能创建简单的ID或Guid列吗?没有脚本,有没有其他方法可以做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以将具有IDENTITY列的目标表设置为PK

您将所有平面文件列发送到表中(忽略IDENTITY列)。在插入过程中,PK字段将自动增加。

答案 1 :(得分:0)

不,Derived Column不能包含将递增/递减值的表达式,并且PK必须是唯一的。不过,这是一件非常简单的事情。

创建变量User::V_Counter并将Transformation Component放在DataFlow的末尾。将新PK列添加到OutputBuffer。代码:

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
   DTS.Variables["V_Counter"].Value = Convert.ToInt32(DTS.Variables["V_Counter"].Value)+1
   ResultBuffer.AddRow();
   ResultBuffer.myPK = DTS.Variables["V_Counter"].Value;
}

myPK映射为目标输入列。您可以在此处轻松操作PK格式 - 添加字符串/日期前缀等。