SSIS将平面文件的2列(仅第一个非空)加载到变量中

时间:2015-07-15 16:33:10

标签: c# vb.net ssis

我有一个包含以下列的平面文件

SampleID Rep_Number产品蛋白质脂肪固体

在平面文件中,SampleID和Product仅在第一行填充,其余行仅包含Rep_Number,Protein,Fat,Solids的值。对于其余行,SampleID和Product为空白。所以我的任务是用第一行填充那些空白行,该行包含sampleID和Product并加载到表中。

所以任务是从平面文件中选择第一个非null SampleID和Product并将它们放在一个变量中。休息都配置好了。如果我可以直接从平面文件中选择第一个非null SampleID和Product并将其放入各自的变量中,我可以从那里获取它。这就是我所需要的一切。

我可以在数据流任务中将脚本组件连接到平面文件源。我需要脚本帮助来选择第一个非空值(SampleID和Product),

请帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果您确定需要将第1行的数据 - 前2列的值存储在变量中并从那里获取,并且不要求更改原始方法,请尝试以下操作:

  1. 您需要有一个新变量来跟踪ROW COUNT。设这是一个整数并将其设置为0.这将有助于仅处理第一行并跳过其余部分。我们称之为Row_Count
  2. 从连接到平面文件的组件中检索数据作为源后,将其连接到“脚本组件”并单击“编辑”。
  3. 在“脚本转换编辑器”中单击左侧的“输入列”,然后选择要从中检索值的所需列(例如Column_Name1和Column_Name2)(即第1和第2个)
  4. 点击左侧的“脚本”
  5. 在“自定义属性”下,展开“ReadWriteVariables”。添加您打算用于存储值和Row_Count变量的2个变量。
  6. 点击“编辑脚本”。
  7. 在打开的编辑器中,双击右侧的“ScriptMain.vb”。
  8. 在Public Overrides Sub PostExecute(){}过程下输入:

    如果Variables.Row_Count = 0那么

    Variables.Your_Variable1 = Row.Column_Name1

    Variables.Your_Variable2 = Row.Column_Name2

    Variables.Row_Count = Variables.Row_Count + 1

    结束如果

  9. 您的变量中包含所需的值,请继续使用其余逻辑。

  10. 注意:

    1. 如果您不将变量添加到'ReadWriteVariables',您将无法在脚本中访问它们。
    2. 根据您可能在脚本中添加的任何其他代码,如果不存在,则需要包含其他标头。
    3. 如果有帮助,请将我的帖子标记为答案:)