根据另一列过滤一列中的数据值,然后将值插入同一列中的不同列 SQL Table
Filtering data values in one column based on another column and then inserting values into different columns in same SQL Table
这是一个我试图使用 SSIS 和条件拆分转换解决的难题。我有一个 .csv 文件,其中一行包含每个唯一用户的属性数据,另一列包含每个属性的值。即:
Attribute, Attribute Type
ID, 0000000001
Birthdate, 09/02/1976
Role, Manager
或者类似的东西。我需要将属性拆分为包含属性类型数据的列。所以期望的结果是:
ID, Birthdate, Role,
0000000001, 09/02/1976, Manager,
然后我需要将它们插入一个 SQL table 和新列中。
我能够通过对一列进行条件拆分转换(例如使用表达式 Attribute == "ID",然后将 .csv 源中的整个 Attribute 列映射到 ID SQL 目的地 table 中的列),但问题是对其他列这样做。我似乎无法进行 Union All 转换来做我想做的事。
有什么建议吗?
您可以使用脚本组件实现:
- 添加脚本组件
- 转到“输入和输出”选项卡
- 添加 3 个输出列:ID、出生日期、角色
- 将同步输入 属性 设置为
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 目标
这是一个我试图使用 SSIS 和条件拆分转换解决的难题。我有一个 .csv 文件,其中一行包含每个唯一用户的属性数据,另一列包含每个属性的值。即:
Attribute, Attribute Type
ID, 0000000001
Birthdate, 09/02/1976
Role, Manager
或者类似的东西。我需要将属性拆分为包含属性类型数据的列。所以期望的结果是:
ID, Birthdate, Role,
0000000001, 09/02/1976, Manager,
然后我需要将它们插入一个 SQL table 和新列中。
我能够通过对一列进行条件拆分转换(例如使用表达式 Attribute == "ID",然后将 .csv 源中的整个 Attribute 列映射到 ID SQL 目的地 table 中的列),但问题是对其他列这样做。我似乎无法进行 Union All 转换来做我想做的事。
有什么建议吗?
您可以使用脚本组件实现:
- 添加脚本组件
- 转到“输入和输出”选项卡
- 添加 3 个输出列:ID、出生日期、角色
- 将同步输入 属性 设置为
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 目标