在SSIS中按顺序处理项目

时间:2011-10-25 17:22:00

标签: sql-server-2005 ssis

在平面文件中,我们有这种类型的记录:

ID,操作,数据

操作包括D =删除,U =更新,I =插入

1,D,测试

问题是他们多次在文件中发送相同的ID,ID可能在文件中的任何位置:

例如:

1,D,测试

以后1000条记录......

1,我,测试

6000条记录......

1,D,测试

在我们的SSIS包中,我们有一个条件分割,它根据操作,删除与更新来引导或分割数据流。 SSIS中的问题是它在行处理中不是顺序的(这对于性能来说是好事)并且在插入之后可能发生删除,反之亦然,这会导致数据不正确。

处理此问题的最佳方法是什么?

我们提出了一些想法:

将文件转储到临时表中,并将文件的行ID附加到记录中,然后使用游标(按文件行号排序)在SQL Server中按顺序循环记录。

使用ForEach容器并在SSIS中按顺序浏览每条记录

按ID对文件进行排序,然后进行“最新”更新。

打破分隔文件的多个操作。例如,如果记录有三个更新,则OriginalFile将成为File1,File2,File3,然后通过SSIS按顺序运行文件。

并非所有记录都是这样的。它似乎给了我们记录的交易记录而不是最新的更新。

感谢。

1 个答案:

答案 0 :(得分:1)

根据个人经验,我发现在处理之前首先将事务数据加载到临时表中是从平面文件处理事务数据的最有效方法。从那里,它取决于您希望如何保留历史交易数据。就个人而言,我的公司希望了解产品的添加时间,产品的最新更新时间,最终发送时间以及客户收到产品的时间。因此,将事务数据加载到临时表中以获取他们想要的功能。