我有这个导入的平面文件,它需要不透明。一切正常,除了我希望unpivot使行甚至是值为null。
我不想诉诸某种黑客来添加-1并在之后替换-1。
使用数据库的软件对于从平面文件导入的每一行,总是有3行,即使它的值为null。
一些绘图来解释问题
平面文件行
----------------------------------------------------------------- |id of person | code1 | value1 | code2 | value2 | code3 | value3| ----------------------------------------------------------------- |123 | hh1 | hh2 | 2 | hh3 | | | ----------------------------------------------------------------- What I get is ------------------------------ |id of person | code | value | ------------------------------ |123 | hh2 | 2 | ------------------------------ what I want ------------------------------ |id of person | code | value | ------------------------------ |123 |hh1 | null | ------------------------------ |123 |hh2 | 2 | ------------------------------ |123 |hh3 | null | ------------------------------
答案 0 :(得分:0)
我认为这是你想要得到你想要的结果的表。
----------------------------------------------------------------- |id of person | code1 | value1 | code2 | value2 | code3 | value3| ----------------------------------------------------------------- |123 | hh1 | NULL | hh2 | 2 | hh3 | NULL | -----------------------------------------------------------------
如果您可以使用 Unpivot 数据流转换执行此操作,我并不乐观,但您可以在具有异步输出的脚本任务中轻松完成此操作。要使用异步输出,您必须在输入和输出下更改转换脚本任务的输出属性。将 SynchronousInputID 设置为无
之后,以下代码应该适合您。
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
Output0Buffer.AddRow();
Output0Buffer.ID = Row.ID;
Output0Buffer.Code = Row.Code1;
Output0Buffer.Value = Row.Value1;
Output0Buffer.AddRow();
Output0Buffer.ID = Row.ID;
Output0Buffer.Code = Row.Code2;
Output0Buffer.Value = Row.Value2;
Output0Buffer.AddRow();
Output0Buffer.ID = Row.ID;
Output0Buffer.Code = Row.Code3;
Output0Buffer.Value = Row.Value3;
}
这将为每1行创建3个新行。我认为您的标识符是 ID 。