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

Ssis 如何在嵌套的foreach循环容器中设置配置,ssis,Ssis,任务是将多个文件的每个工作表(位于同一文件夹中)加载到同一sql server表中,所有工作表具有相同的格式,可以加载到同一sql表中 我正在使用visual studio数据工具2010。我知道如何在外部Foreach循环容器中使用Foreach文件枚举器设置循环文件,以及如何在内部Foreach循环容器中使用Foreach ADO.NET架构行集枚举器设置循环表。我的问题是如何通过动态传递文件路径在这两个foreach循环容器之间建立连接 我已尝试将excel ado access连接管理器

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

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

我已尝试将excel ado access连接管理器-->属性-->表达式-->[name]配置为[fullfilepath],类似于@[User::fileFolder]+@[User::FileName],但不起作用

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


]]

从您的错误和描述来看,问题在于您正在表达式中设置[name]属性。您应该将[connection string]属性设置为[fullfilepath],而不是name属性

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

本文展示了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版本相关

例如Excel 97至2003

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

对于ACE驱动程序,这几乎是相同的,只是更改了提供者部分

例如


谢谢马特的见解。我最终通过使用ADO.NET实现了表单的内部循环。我以前缺少的是DFT缺少一个额外的excel连接管理器

任何错误消息或您决定“它不工作”的原因都是有益的。我的错误显示为错误:在连接列表中找不到连接名“C:\ssis\Book1.xlsx”。我不理解您的评论或其中的问题。我建议用Excel连接表达式配置的屏幕截图更新您的问题,并讨论如何/何时设置在那里使用的变量值。您关于错误的评论中的问题似乎使您将错误的值分配给了错误的属性。请使用四个变量:Folder->C:\ssis\Book1.xlsx;文件名->空白;fullfilepath->[User::folder]+“\\”+[User::filename];sheetname->blank我将[connection string]更改为fullfilepath,但没有给我文件循环,只是第一个文件重复加载到sql server,最后一个错误[connection manager“C:\ssis\Book1.xlsx”]错误:连接字符串格式无效。它必须由一个或多个X=Y形式的组件组成,以分号分隔。如果在数据库连接管理器上设置了零组件的连接字符串,则会发生此错误。嗨,Joan,如果不了解软件包配置的详细信息,就很难理解此问题。请使用控制和数据流以及何时/如何设置变量值和表达式值更新您的帖子。那么我们/社区可能会更好地帮助您。谢谢Matt。我已经上传了配置图像。它给出了连接字符串的错误。我不知道我错在哪里,也不知道遗漏了什么。真的很感激!!!请参阅我的更新答案,其中有一篇文章介绍了您正在做什么,还有一篇关于使用ADO.net连接管理器时连接字符串的说明
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +  @[User::fullfilepath] + ";Extended Properties=Excel 8.0"