SSIS的Excel连接字符串不枚举文件更新

问题描述:

问题:SSIS的Excel连接字符串不枚举文件更新

我的Excel连接管理器的文件路径没有被更新的变量通过传递的更新Foreach文件枚举器。

功能要求:

我有我需要通过进口来迭代到SQL Server数据库的目录里面一组Excel文件。

这些文件的第一个限制是其中一个列在每个单元格中最多有3000个字符(吹出标准的255个字符最大值)。

第二个限制是我有一个限制在这里,我不能采取正常的路径和更新注册表来采样更多的行(我通常会创建一个初始几行的初始文件具有3000个字符的列)。

解决构想:

原型: 为了对抗> 255字符细胞和编辑我选择使用脚本任务它充分利用了Excel连接注册表的禁令。 参考:
https://egilhansen.com/2015/07/28/ssis-solution-excel-data-source-text-truncation-column-more-than-255-characters/

我有一个单一的数据流任务导入使用该脚本的工作一个文件,所以剧本的声音。

FYI,数据流的任务仅具有3在它的数据流项目: 1)脚本任务摄取的excel文件 2)派生列,在所列举的filstring 3)一个OLE DB加载添加内容这些到一个数据库

所有文件夹中的解决方案文件:

我再建立起一个foreach循环容器和复制的脚本任务到它。

我配置了Excel连接的表达式的属性,使其具有文件路径的属性,并将文件名变量映射到foreach文件枚举器映射到的文件变量。

最后,我在流控任务,Excel连接和Excel连接管理器的属性上设置了Delayvalidation。

旁注:在Foreach File枚举器中,派生列实际上正确地在枚举的文件名中添加了正确 - >它只是不更新​​的excel连接字符串。

结束语: 我把改变excel文件表达式变成一个ConnetionString并添加到另一个变量和脚本任务来改变它在foreach循环内(利用枚举文件变量),但ConnetionString变量isn'更新......我现在想知道是否需要在现有的foreach循环中嵌套一个foreach循环容器来更新excel连接字符串变量,然后继续执行主脚本

+0

我也看了一堆关于如何在excel文件的文件夹中使用foreach文件循环的指导博客: – Minniman

+0

例如https://mikedavissql.com/2013/09/16/loop-通过excel-files-in-ssis/ – Minniman

+0

区别在于我使用的脚本任​​务连接到Excel连接管理器连接而不是Excel数据流源 – Minniman

我没有评论的声望,我很抱歉。我在你最近的评论中看到你说连接字符串没有更新。这是我在SSIS之前遇到的一个问题,它不会在组件内部分配变量的值。意思是如果你在循环内部,它将不会赋值直到它完成循环。这也适用于数据流。解决它的方法是将该值设置为像嵌套循环中所提示的那样。如果您不介意,我们可以将其用作评论,以帮助您解决问题。

+0

感谢凯尔,是的同意重新构思的问题是“如何配置我的原始循环内的嵌套循环传递正确枚举的文件和fliepath到 – Minniman

+0

也更新连接字符串变量以及执行脚本任务组件,都使用相同的变量“ – Minniman

+0

对于任何人跟随此线程,我已经找到另一个线程处理问题,我看到上面使用嵌套的foreach循环。它的线程参考是在https://*.com/questions/7411741/how-to-loop-through-excel-files-and-load-them-into-a-database-using-ssis-package。我已经能够使这个工作合并我以前的c#脚本对象,它现在克服了255字符限制 – Minniman