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 中创建一个执行以下操作的进程:
- 获取特定目录下的所有文本文件
- 按创建顺序对这些文件进行排序(有些文件更改相同 table,因此我需要最新的文件在这些记录中具有最后发言权 inserted/updated)
- 处理每个文件
- 对于该文本文件上的每个 记录 我需要将该记录插入 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;
我需要在 SSIS 中创建一个执行以下操作的进程:
- 获取特定目录下的所有文本文件
- 按创建顺序对这些文件进行排序(有些文件更改相同 table,因此我需要最新的文件在这些记录中具有最后发言权 inserted/updated)
- 处理每个文件
- 对于该文本文件上的每个 记录 我需要将该记录插入 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;