如何在嵌套的foreach循环容器中设置配置

时间:2016-09-05 15:13:08

标签: ssis

任务是将每个工作表的多个文件(在同一个文件夹中)加载到同一个sql server表中,所有工作表都具有相同的格式,可以加载到同一个sql表中。

我正在使用visual studio数据工具2010.我知道如何在外部foreach循环容器中使用Foreach File Enumerator设置循环文件,以及如何在内部foreach循环容器中使用Foreach ADO.NET Schema Rowset Enumerator设置循环表。我的问题是如何通过动态传递文件路径来在这两个foreach循环容器之间建立连接。

我尝试配置excel ado访问连接管理器 - > property --->表达式---> [名称]到[fullfilepath],如@ [User :: fileFolder] + @ [User :: FileName],但不起作用....

任何人都可以帮忙吗?非常感谢!

Connection Manager config[![foreach loop conf[![DFT config] 2] 3

2 个答案:

答案 0 :(得分:0)

根据您的错误和说明,问题是您在表达式中设置[name]属性。您应该将[连接字符串]属性设置为[fullfilepath]而不是name属性。

关于您的编辑和评论。 有趣的是,我没有尝试过你想要做的事情,但在我看来,你使用错误的连接管理器/提供者类型,所以我做了一个快速的互联网搜索,看看我是否可以确认并找到这篇MS文章{ {3}}看起来几乎就是你想要的。

本文展示了使用Jet.OLEDB.4.0提供程序而不是您尝试使用的访问提供程序。我不肯定你是否可以使用ACE OLEDB并获得相同的结果,你不得不尝试。但是,无论哪种方式,连接字符串不仅仅是像平面文件或excel连接管理器那样的文件路径,而是需要它是一个合适的连接字符串。

对于Jet 4.0,访问驱动程序确实使用了文章建议:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +  @[User::fullfilepath] + ";Extended Properties=\"" + @[User::ExtProperties] + "\"" 

扩展属性中的反斜杠是包含双引号的转义序列。扩展属性是必需的,并且与您要连接的Excel版本相关。

E.g。 Excel 97到2003

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +  @[User::fullfilepath] + ";Extended Properties=Excel 8.0"

Excel 12.0 for 2007 +

对于ACE驱动程序,它只会改变提供者部分。

E.g。

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +  @[User::fullfilepath] + ";Extended Properties=Excel 8.0"

答案 1 :(得分:-1)

感谢Matt的见解。我终于通过使用ADO.NET来实现工作表的内部循环。我之前缺少的是缺少一个额外的DFT excel连接管理器。

相关问题