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

SSIS load 2 columns of a flat file (first non null only) into a variable

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

样品 ID Rep_Number 产品蛋白质脂肪固体

在平面文件中,SampleID 和 Product 仅填充在第一行,其余行仅包含 Rep_Number、蛋白质、脂肪、固体的值。其余行的 SampleID 和 Product 为空。所以我的任务是用具有 sampleID 和 Product 的第一行填充这些空白行,然后加载到 table.

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

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

需要帮助。提前致谢。

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

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

    如果Variables.Row_Count = 0 那么

    变量。Your_Variable1 = 行。Column_Name1

    变量。Your_Variable2 = 行。Column_Name2

    Variables.Row_Count=Variables.Row_Count+1

    如果

  10. 结束
  11. 您的变量中有所需的值,请继续您的其余逻辑。

注:

  1. 如果您不将变量添加到 'ReadWriteVariables',您将无法在脚本中访问它们。
  2. 根据您可能在脚本中添加的任何其他代码,如果它们不存在,您将需要添加额外的 headers。

如果有帮助请标记我的post为答案:)