【问题标题】:Sourcefile name change in SSIS PackageSSIS 包中的源文件名称更改
【发布时间】:2016-06-09 10:09:03
【问题描述】:

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

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

如何使流程自动化?

【问题讨论】:

    标签: ssis


    【解决方案1】:

    只需在 SSIS 中使用 ForEach 容器。

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

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

    【讨论】:

    • 如果源文件名从 I:\Test\User_09-05-2016.xlsx 更改为 I:\Test\User_09-06-2016.xlsx,包如何处理
    • 只需在 SSIS 中使用 ForEach 容器。
    【解决方案2】:

    FE 循环的替代方法 - 在包运行时定义 Excel 文件的路径和文件名。
    如果您知道命名 Excel 文件的规则,请创建一个字符串变量 Excel_FilePath,其中包含带有表达式的完整路径,例如 [User::Folder Path]+"\\"+[User::Filename]+".xlsx"。然后获取您的 Excel 文件 Connection Manager 并将以下表达式添加到 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

    【讨论】:

    • 感谢您的重播...。我已经浏览了您提供的屏幕截图。但我不想从多个文件中提取数据。我需要从每个月具有不同文件名(日期)的单个 excel 文件中提取数据。
    • 文章中作者要处理多个文件。在您的情况下 - 不要使用 Loops 并按照说明创建 ConnectionManager 字符串。另一种方法 - 创建您的包处理单个 Excel 文件并在您从 SQL 作业调用此包时传递调整后的 ConnectionString。但在这种情况下,您必须在 SQL Job 中动态创建连接字符串,这可能很棘手。
    猜你喜欢
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    相关资源
    最近更新 更多