SSIS - 将xml文件移动到适当的文件夹取决于条件分割结果

时间:2017-05-06 23:00:50

标签: sql-server xml ssis etl

我有类似的东西:

Control Flow

并在Data flow中输入以下代码:

Data flow

我试图在Output变量中参数化Output参数。 所以,例如。

  • 当XML文件中的国家/地区为英国时 - >将XML文件移动到文件夹C:\ A
  • 当XML文件中的国家/地区不是英国时 - >将XML文件移动到文件夹C:\ B

我可能需要使用脚本组件吗?

此输出变量我想放入文件系统任务目标字段

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

首先,您不必在条件拆分中创建Case 2,您可以使用默认输出。 (因为如果Case 1为false,则行被重定向到条件拆分默认输出)

您可以使用一个脚本组件执行整个过程,而无需条件分割

请执行以下操作:

假设您将Xml文件路径存储在名为User::XmlPath

的变量中
  1. 删除条件拆分和两个脚本组件,同时删除文件系统任务
  2. 添加直接链接到XML Source的脚本组件
  3. User::XmlPath添加到脚本组件 ReadOnlyVariables
  4. enter image description here

    1. 在脚本组件中编写以下代码

      Dim strPath As String = String.Empty
      Public Overrides Sub PreExecute()
          MyBase.PreExecute()
      
          strPath = Variables.XmlPath
          '
      End Sub
      
      ' This method is called after all the rows have passed through this component.
      '
      ' You can delete this method if you don't need to do anything here.
      Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
      
          Dim strFile As String = IO.Path.GetFileName(strPath)
      
          If Row.Country.ToUpper = "UK" Then
      
              IO.File.Move(strPath, "C:\A\" & strFile)
      
          Else
      
              IO.File.Move(strPath, "C:\B\" & strFile)
      
          End If
      
      End Sub