根据另一列过滤一列中的数据值,然后将值插入到同一个 SQL 表中的不同列中

2023-12-24

这是我试图使用 SSIS 和条件分割转换来解决的一个难题。我有一个 .csv 文件,其中一行中包含每个唯一用户的属性数据,另一列中包含每个属性的值。 IE。:

Attribute, Attribute Type

ID, 0000000001

Birthdate, 09/02/1976

Role, Manager

或者类似的东西。我需要将属性拆分为包含属性类型数据的列。所以期望的结果是:

ID,                    Birthdate,              Role,

0000000001,             09/02/1976,            Manager,

然后我需要将它们插入到包含新列的 SQL 表中。

我能够通过一列的条件分割转换完美地完成此任务(例如使用表达式 Attribute == "ID",然后将 .csv 源中的整个 Attribute 列映射到 SQL 目标表中的 ID 列)但问题是对其他列这样做。我似乎无法让 Union All 转型来做我想做的事。

有什么建议吗?


您可以使用脚本组件来实现这一点:

  1. 添加脚本组件
  2. 转到输入和输出选项卡
  3. 添加 3 个输出列:ID、出生日期、角色
  4. 将 SynchronousInput 属性设置为None
  1. 在脚本编辑器中,编写类似的脚本:
string ID = "";
string BirthDate = "";
string Role = "";
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
   if(!Row.Attribute_IsNull && !String.IsNullOrWhiteSpace(Row.Attribute))
    {

        switch (Row.Attribute)
        {

            case "ID":
                ID = Row.AttributeType;
                break;

            case "BirthDate":
                BirthDate = Row.AttributeType;
                break;

            case "Role":
                Role = Row.AttributeType;

                Output0Buffer.AddRow();
                Output0Buffer.ID = ID;
                Output0Buffer.Role = Role;
                Output0Buffer.BirthDate = BirthDate;

                break;
            default:
                break;
        }
    }
}
  1. 将输出列映射到 OLE DB 目标
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据另一列过滤一列中的数据值,然后将值插入到同一个 SQL 表中的不同列中 的相关文章

随机推荐