2016-06-09 45 views
0

我已经创建了从文件夹导入Excel文件的SSIS包。 Excel文件的名称根据月份而改变。 例如:I:\ Test \ User_09-05-2016.xlsx或 I:\ Test \ User_09-06-2016.xlsx等.....SSIS包中的源文件名更改

我想创建SQL作业来运行包,因为我每个月都会得到一个新文件。 我想在成功执行包后保存excel文件(一次只保留一个文件夹中的excel文件)。

我该如何自动化过程?

回答

0

只需在SSIS中使用ForEach容器即可。

导入该文件夹中的每个电子表格。

处理后删除(或移动)每个电子表格。

+0

如果源文件名从I:\ Test \ User_09-05-2016.xlsx更改为I:\ Test \ User_09-06-2016.xlsx – Apoorv

+0

如何处理源文件名只需在SSIS中使用ForEach容器即可。 – BIDeveloper

0

FE循环的替代方法 - 在程序包运行时定义Excel文件的路径和文件名。
如果您知道命名Excel文件的规则,请创建一个字符串变量Excel_FilePath包含完整路径并使用表达式,如[User::Folder Path]+"\\"+[User::Filename]+".xlsx"。然后把你的Excel文件连接管理器添加到ConnectionString属性"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @[User::Excel_FilePath] + ";Extended Properties=\"Excel 8.0;HDR=YES\";"
以下表达式在包属性 - 设置DelayValidation = true
更多details on this approach with screenshotsexactly your question reviewed

+0

感谢您的重播......我已经完成了您提供的屏幕截图。但我不想从多个文件中提取数据。我需要从单个Excel文件中获取每个月有不同文件名(日期)的数据。 – Apoorv

+0

文章作者想处理多个文件。在你的情况下 - 不要使用循环并按照描述创建ConnectionManager字符串。另一种方法 - 创建您的包,处理单个Excel文件,并在您从SQL Job调用此包时传递调整后的* ConnectionString *。但在这种情况下,您必须在SQL Job中动态创建连接字符串,这可能会非常棘手。 – Ferdipux