如何使用SSIS每周导入文件?

时间:2019-05-20 17:42:10

标签: sql-server ssis

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

enter image description here

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

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

几周之内

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

订购的结果

您只需在Execute SQL Task中添加ORDER BY子句即可获得有序的结果集。