【问题标题】:SSIS For Each Loop crashes the flat file connectionSSIS For Each Loop 使平面文件连接崩溃
【发布时间】:2014-06-25 22:58:35
【问题描述】:

我创建了一个简单的 SSIS 包来将平面文件 (.txt) 导入数据库表。测试了它,它工作得很好。由于我有几个要导入的文件,我添加了一个 foreach 循环来遍历所有文件,按照网上找到的几个示例中的建议添加了变量,但现在我的平面文件连接管理器返回错误“必须是有效的文件名被选中。”并且包将不会运行。到目前为止,我未能成功找到解决此问题的方法,并感谢本论坛 SSIS 专家提供的任何建议。非常感谢!

这是我的变量方式:

  • SourceFileFolder 是包含文件的文件夹的路径
  • FileName 一个字符串,其中包含我要导入的文件的名称之一
  • SourceFilePath,它是一个表达式驱动的变量,将前两个变量串联在一起。我可以单击“评估表达式”并将其复制并粘贴到 Windows 资源管理器中并打开文件
  • ArchivePath 是一个表达式驱动的变量,它创建文件处理后归档到的路径。

【问题讨论】:

    标签: ssis sql-server-2008-r2 connection


    【解决方案1】:

    正如消息所说,这与您的连接管理器没有收集连接字符串有关。这可以使用以下方法处理:

    首先清除SourceFilePath变量上的表达式。

    使用您的 Foreach 循环容器,进行如下设置:

    这将使用您的变量 SourceFileFolder 作为文件夹,例如,您也可以硬编码文件夹名称 C:\。还要确保您的文件夹是正确限定的,即确保它以斜线结尾 C: 不起作用,但 C:\ 会起作用。

    接下来,您需要将完全限定名称映射到您的其他变量 SourceFilePath

    现在应该将循环找到的文件的全名存储到SourceFilePath 变量中。对于实例C:\File.txt,您现在可以将其用作文件连接管理器上的连接字符串表达式。

    在连接管理器的属性下,确保表达式设置为ConnectionString,然后使用SourceFileName 变量。

    还要确保延迟验证设置为真

    希望这意味着您可以遍历文件。

    【讨论】:

      猜你喜欢
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      相关资源
      最近更新 更多