SSIS - 循环遍历按创建顺序排序的文本文件,并将每个文件中的每条记录作为更新或插入到 SQL Table 中进行处理

SSIS - Loop through text files sorted in creation order and process each record on each file as an update or an insert into a SQL Table

我需要在 SSIS 中创建一个执行以下操作的进程:

  1. 获取特定目录下的所有文本文件
  2. 按创建顺序对这些文件进行排序(有些文件更改相同 table,因此我需要最新的文件在这些记录中具有最后发言权 inserted/updated)
  3. 处理每个文件
  4. 对于该文本文件上的每个 记录 我需要将该记录插入 sql table 或更新该记录(如果它已存在于数据库

执行此操作的最佳方法是什么?

我正在使用 SQLServer 2016

不胜感激。

SSIS 中已经有一个完美且广泛使用的任务,称为 foreach 任务。这将抓取目录中的每个文件(您可以指定一个掩码,以便它抓取所有 csv 或 txt 类型的文件 (1) (3) 然后在容器中您可以传入文件并使用数据任务处理它(步骤 4 )。您可能会在文本文件处理后向 move/archive/delete 添加一项或多项任务。

我不明白第 2 步的意义所在。您可能想要处理给定文件夹中的所有文件。为什么顺序很重要?

我不知道在 SSIS 中保证排序顺序的方法,但这是脚本任务的 c# 解决方案:

        string[] files = new System.IO.DirectoryInfo(@"C:\path").GetFiles()
                               .Where(e => e.Extension.EndsWith("txt"))
                               .OrderBy(d => d.CreationTime)
                               .Select(f => f.FullName)
                               .ToArray();

        foreach(var f in files)
        {
             //Do your work here or pass out to variable to be processed in SSIS
        }

确保以下命名空间在您的代码中:

using System.Linq;