我创建了一个SSIS包,以从文件夹中选择平面文件并导入到SQL数据库中。他们有5个遵循此命名方案的注释文件:
ABS_Comment-name.txt
我需要在连字符(-)之前的文本。
@[User::FileName] == "ABS_Comment"
注意:此表达式将在For Each循环容器的“优先约束”编辑器中使用
让我知道您是否需要更多信息
答案 0 :(得分:2)
创建额外的SSIS变量不会花费您任何费用,并且大大简化了调试。
我将添加一个名为BaseFileName
的新SSIS变量,其目的是使您能够查看针对FileName的字符串操作的结果。如果您是基于对象/优先级约束构建的,则将无法对其进行检查。
根据您的情况,您需要选择最左边的字符,并且需要找出字符串中连字符的位置。 [LEFT][1]
表达式或[SUBSTRING][1]
将满足使用前N个字符的要求。 [FINDSTRING][1]
表达式是确定搜索字符连字符的位置的方式。
LEFT(@[User::FileName, FINDSTRING(@[User::FileName], "-", 1))
该表达式可能会偏离1,因此请检查结果字符串,并根据需要在FINDSTRING的结果中添加/删除1。
对于SSIS 2005上的人们来说,不存在LEFT,因此重写为SUBSTRING的方式如下(对由一个人进行检查的相同警告)
SUBSTRING(@[User::FileName, 1, FINDSTRING(@[User::FileName], "-", 1))
此时,您的简化优先约束是
@[User::BaseFileName] == "ABS_Comment"
答案 1 :(得分:1)