【问题标题】:How to import files week by week using SSIS?如何使用 SSIS 每周导入文件?
【发布时间】:2019-05-20 17:42:10
【问题描述】:

我想每周在 SQL Server 数据库中加载文件。每个文件名都包含日期。目前,我正在使用 Foreach 循环容器来获取文件名并将其存储在表中。表包含 3 列 FileName、Date 和 Week。使用 Execute SQL Task 加载 FileName 后,我从 FileName 和 Populate Date and Week 列中提取日期和星期。然后我使用 Execute SQL Task 选择所有表日期 ORDER BY Date and Week 并将其存储到对象变量中。最后,我使用 Foreach 循环容器使用 ADO 枚举器和对象变量按日期顺序加载实际文件。这工作正常。但是,我想每周加载文件。例如,应首先加载表中第 15 周的所有文件。然后它应该加载加载第 16 周的所有文件,依此类推。我想像这样加载的原因是在加载了一周的文件之后我想使用一些存储过程来处理它。

【问题讨论】:

  • 您的意思是将它们限制在当前周内还是保留订单以防第 15 周和第 16 周都在文件夹/集中?我最初打算评论说,因为您是按日期订购的……您已经按顺序处理了几周?
  • 它应该每周加载数据。 ORDER BY Date and Week,因为我可以拥有超过一年的文件
  • 实际问题是什么?你所解释的应该像你描述的那样工作

标签: sql-server ssis


【解决方案1】:

我认为可以通过两次编辑来解决问题:

循环数周

  1. 添加一个执行 SQL 任务,从表中检索不同的周数
  2. 添加一个 foreach 循环容器以循环数周
  3. 在 foreach 循环内添加一个执行 SQL 任务,用于根据当前周检索行
  4. 使用另一个 foreach 循环容器来循环结果

排序结果

您可以简单地在执行 SQL 任务中添加一个 ORDER BY 子句来获得有序的结果集。

【讨论】:

    【解决方案2】:

    这是 ForEach 循环枚举器的限制 - 无法以排序/有序的方式加载文件。如果您想以这种方式加载文件,那么有两种方法可以做到这一点:

    1. 从第三方供应商处购买昂贵的组件包,这些供应商提供 ForEach 循环枚举器,可以以排序/有序的方式处理文件
    2. 自己手动操作。

    对于选项二,您需要执行以下步骤:

    1. 创建 ForEach File 循环枚举器扫描文件夹中的所有文件并将文件名插入数据库表中。
    2. 创建一个执行 SQL 任务,它将选择所有文件名,按文件名排序。您可以在 WHERE 子句中添加约束来控制要处理的文件的日期范围。
    3. 将结果集加载到 Object 类型的变量中
    4. 创建一个 ForEach ADO 循环枚举器以遍历对象中存储的每个文件名。
    5. 将数据流置于循环中,然后处理文件。

    【讨论】:

    • 我正在按照你在选项二中所说的那样做。但我想每周而不是一次加载文件。
    • @JayDesai 从文件名中解析日期,然后在 WHERE 子句中添加约束以仅处理特定时间段。我已经更新了我的答案,请参阅第 2 项。
    • 我想加载所有文件,但不是一次加载,例如在第 15 周有 3 个文件,然后它应该先加载 3 个文件,然后再加载一个实例的一些任务执行 SQL操作数据并在最后截断表的任务,之后它应该加载第 16 周的文件并处理它,然后处理第 17 周的文件,依此类推。基本上是一些循环机制。
    • @JayDesai 您可能正试图过度设计解决方案。您是否考虑过在 SQL 表中添加额外的列来指示应该处理哪些文件?因此,给定一周的所有文件都可以处于等待状态,而所有其他周都处于暂停状态。处理完本周的文件后,可以添加执行 SQL 任务,将下周的文件设置为等待状态。这样,作业只处理您想要的。我就是这样做的。
    • @JayDesai 相同的区别-加载历史数据或前进数据都没有关系。状态栏将为您提供更大的灵活性来控制正在加载的内容,同时简化设计。否则,这将是一堆手动干预,您将在其中指定作业处理的文件夹,然后手动将每周的文件移入和移出以进行处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 2023-01-23
    • 2016-11-21
    • 2022-10-14
    • 1970-01-01
    相关资源
    最近更新 更多