这是我试图使用 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 转型来做我想做的事。
有什么建议吗?
您可以使用脚本组件来实现这一点:
- 添加脚本组件
- 转到输入和输出选项卡
- 添加 3 个输出列:ID、出生日期、角色
- 将 SynchronousInput 属性设置为
None
- 在脚本编辑器中,编写类似的脚本:
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;
}
}
}
- 将输出列映射到 OLE DB 目标
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)