2

这是我试图使用 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 转换来做我想做的事情。

有什么建议吗?

4

1 回答 1

1

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

  1. 添加脚本组件
  2. 转到输入和输出选项卡
  3. 添加 3 个输出列:ID、BirthDate、Role
  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 目标
于 2019-06-10T20:44:06.837 回答