SSIS foreach循环容器中的通配符搜索

Wildcard search in SSIS foreach loop container

如果变化的字符串介于两者之间,我如何执行通配符搜索

示例:

我知道 Tree_Mango_* 如果所需的文件是 Tree_Mango_1、Tree_Mango_2 等,则可以工作。

但是如果我需要的是Tree_1_Mango、Tree_2_Mango、Tree_3_Mango等...那么我该如何指定通配符呢?

Foreach 文件枚举器容器的通配符将执行与 Windows/DOS OS 相同的操作。

* 将可选地匹配任何内容

? 将匹配一个字符

鉴于

的源值
  • Tree_1_Mango
  • Tree_2_Mango
  • Tree_3_Mango

我会使用 FileSpecificationTree_?_Mango

鉴于我的目录内容如下

C:\SSISData\so061364>dir /b /s
C:\SSISData\so061364\Tree_1_Mango
C:\SSISData\so061364\Tree_2_Mango
C:\SSISData\so061364\Tree_3_Mango
C:\SSISData\so061364\Tree_4_MangoDB
C:\SSISData\so061364\Tree__Mango

并且我使用 Biml 为 foreach 文件枚举器创建了一个简单的包。不熟悉 Biml?安装免费附加组件 BIDS Helper。添加一个新的 Biml 文件并粘贴以下声明。右键单击并生成 SSIS 包。

<Biml xmlns="http://schemas.varigence.com/biml.xsd">
    <Packages>
        <Package Name="TreeMango">
            <Variables>
                <Variable DataType="String" Name="CurrentFileName">mixed</Variable>
            </Variables>
            <Tasks>
                <ForEachFileLoop 
                    Folder="C:\SSISData\so061364" 
                    FileSpecification="Tree_?_Mango" 
                    Name="FELC Tree Mango">
                    <VariableMappings>
                        <VariableMapping VariableName="User.CurrentFileName" Name="0" />
                    </VariableMappings>
                </ForEachFileLoop>
            </Tasks>
        </Package>
    </Packages>
</Biml>

结果是Tree_1_Mango、Tree_2_Mango、Tree_3_Mango匹配我的通配符。 Tree_4_MangoDB 和 Tree__Mango 不匹配。