【问题标题】:How to pass the excel connection string dynamically in the foreach loop container for Excel Source?如何在Excel Source的foreach循环容器中动态传递excel连接字符串?
【发布时间】:2019-01-08 19:52:18
【问题描述】:

如何在Excel Source的foreach循环容器中动态传递excel连接字符串?

在 Foreach 循环容器中,我将变量设置为表达式/目录。

在 Excel 源中,我已将 Excel 连接字符串与 Foreach 循环容器中提到的相同变量映射。

但是,我收到一个错误

找不到特定连接元素时,Connections 集合会抛出此错误

【问题讨论】:

  • 当您想通过表达式动态更改 Excel 连接时,您想使用 ExcelFilePath 属性而不是 ConnectionString:stackoverflow.com/questions/52962691/…
  • 谢谢蒂姆,在我的情况下,您在答案屏幕截图中看到的文件夹路径是从变量中挑选的。文件夹路径在变量中设置
  • 如何从变量中获取 Excel 文件路径?在 Foreach 循环容器中
  • 我想我明白了。不要使用与 Foreach 循环相同的变量。我假设您的 User::InboundFilePath 是您要处理的所有 excel 文件所在的位置。创建第二个变量,然后在 foreach 循环中确保“检索文件名”设置为完全限定,在变量映射下选择您使用索引 0 创建的第二个变量。现在通过表达式在 ExcelFilePath 属性上使用该新变量。 foreach 循环遍历每个文件,它将完整路径和名称分配给新变量,然后将其传递给 excel 连接。
  • @Hadi .. 谢谢 .. 让我检查一下

标签: sql-server excel ssis etl ssis-2012


【解决方案1】:

您可以通过 3 个步骤执行此操作:

  1. 在 for each 循环容器中,转到变量映射并将循环结果映射到变量中。
  2. 在 Excel 连接管理器上,转到表达式,将 ExcelFilePath 属性表达式的值设置为您在 for each 循环中创建的变量。
  3. 在数据流任务中将Delay Validation属性值更改为True。

如需详细的分步教程,请查看以下链接:

【讨论】:

  • 我在表达式评估中遇到错误.. Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::TestFilePath] + ";Extended Properties="EXCEL 12.0 XML ;HDR=YES";
  • 不要将表达式分配给ConnectionString 属性,将其分配给ExcelFilePath property
  • 或者这样写:"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::TestFilePath] + ";Extended Properties=""EXCEL 12.0 XML;HDR=YES"";" ...你错过了以双引号开头
  • 谢谢.. 但是 ExcelFilePath 属性的问题是,我们需要提供 excel 文件的实际路径。一旦在 Dev 环境中开发包,我们将移动到不同的环境以从 Job Scheduler 运行包。所以最好把它放在我们可以动态实现的连接字符串属性中
  • 这就是为什么我提到你必须将Delay Validation 属性设置为True
猜你喜欢
  • 2021-11-13
  • 2013-07-09
  • 2021-05-12
  • 2017-09-22
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多