Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS Foreach循环容器动态文件名和路径,排除带有超过特定下划线的文件_Ssis - Fatal编程技术网

SSIS Foreach循环容器动态文件名和路径,排除带有超过特定下划线的文件

SSIS Foreach循环容器动态文件名和路径,排除带有超过特定下划线的文件,ssis,Ssis,我有一个Foreach文件枚举器,它将从文件夹中读取pdf文件名,并将文件名放入数据库。然而,我希望它排除读取的文件名,它有少于3个下划线 AAA_BBB_000004554_060420161906_S1234567H_M.pdf AAA_BBB_000003345_060420161906_S9876543H_S.pdf AAA_BBB_000008546_060420161906_S1234123H_V.pdf AAA_BBB_201604.pdf etc AAA_BBB_20160

我有一个Foreach文件枚举器,它将从文件夹中读取pdf文件名,并将文件名放入数据库。然而,我希望它排除读取的文件名,它有少于3个下划线

AAA_BBB_000004554_060420161906_S1234567H_M.pdf
AAA_BBB_000003345_060420161906_S9876543H_S.pdf
AAA_BBB_000008546_060420161906_S1234123H_V.pdf
AAA_BBB_201604.pdf  
etc
AAA_BBB_201604.pdf应排除在循环中,因为文件名只有2个下划线

AAA_BBB_000004554_060420161906_S1234567H_M.pdf
AAA_BBB_000003345_060420161906_S9876543H_S.pdf
AAA_BBB_000008546_060420161906_S1234123H_V.pdf
AAA_BBB_201604.pdf  
etc

我怎样才能存档?我做了一些搜索,似乎使用表达式是关键,但我不知道怎么做。感谢您的帮助。

这可以使用表达式中的TOKENCOUNT函数来完成

创建2个变量

  • 字符串类型的文件名
  • Int32类型的令牌计数
  • Foreach循环容器

  • 使用Foreach循环容器并设置Collection-Foreach文件 统计员

  • 指定.pdf文件所在的文件夹位置

  • 在文件下设置“.pdf*:选择单选按钮检索文件名- 仅此而已

  • 映射检索到的文件名
  • 接下来,在Foreach循环容器中放置一个表达式任务,并使用以下表达式

  • 接下来,删除一个执行SQL任务,并从Expression任务连接它

    @[User::TokenCount]=TokenCount(@[User::FileName],“”)

    这使用TOKENCOUNT函数-返回字符串中的令牌数(在您的案例中为FileName),该字符串包含由指定分隔符分隔的令牌(在您的案例中为“-u1”)

    将令牌计数分配给int变量-@[User::TokenCount]

  • 在优先约束编辑器中,提供以下约束选项

  • 配置执行SQL任务
  • 最后,它应该是这样的
  • 为了调试的目的,我将脚本任务放在表达式任务和执行SQL任务之间,如果您想使用它的话
  • 运行包-假设您希望从此文件夹加载这些文件名

  • 因为,我们在表达式中给出了条件(令牌计数>3),所以在运行包之后,这些文件名将加载到数据库中


  • 希望这有帮助。

    这可以通过在表达式中使用TOKENCOUNT函数来完成

    创建2个变量

  • 字符串类型的文件名
  • Int32类型的令牌计数
  • Foreach循环容器

  • 使用Foreach循环容器并设置Collection-Foreach文件 统计员

  • 指定.pdf文件所在的文件夹位置

  • 在文件下设置“.pdf*:选择单选按钮检索文件名- 仅此而已

  • 映射检索到的文件名
  • 接下来,在Foreach循环容器中放置一个表达式任务,并使用以下表达式

  • 接下来,删除一个执行SQL任务,并从Expression任务连接它

    @[User::TokenCount]=TokenCount(@[User::FileName],“”)

    这使用TOKENCOUNT函数-返回字符串中的令牌数(在您的案例中为FileName),该字符串包含由指定分隔符分隔的令牌(在您的案例中为“-u1”)

    将令牌计数分配给int变量-@[User::TokenCount]

  • 在优先约束编辑器中,提供以下约束选项

  • 配置执行SQL任务
  • 最后,它应该是这样的
  • 为了调试的目的,我将脚本任务放在表达式任务和执行SQL任务之间,如果您想使用它的话
  • 运行包-假设您希望从此文件夹加载这些文件名

  • 因为,我们在表达式中给出了条件(令牌计数>3),所以在运行包之后,这些文件名将加载到数据库中


  • 希望这能有所帮助。

    如果文件名一致,您可以使用合适的文件名过滤器,即
    ???????。
    将包括您的示例文件名并排除您的示例。我建议您只需事先运行DOS ROBOCOPY copy命令来识别和移动合适的文件,只要它们可以通过合适的模式识别:如果文件名一致,您可以使用合适的文件名过滤器,即
    ???????*。PDF
    将包括您的示例文件名并排除您的示例。我建议您只需事先运行DOS ROBOCOPY copy命令,识别并移动合适的文件,只要它们可以通过合适的模式识别: