更新用于从SSIS导入的表中的行

时间:2015-06-12 14:49:54

标签: sql-server ssis package

我当前正在创建一个SSIS包,从一个表中选择前2000个条目并将这些条目插入另一个表中。如何更新原始表中的条目(我的选择包含一个条件,我检查状态仍为空的位置)所以在我下次运行SSIS包时,它们将不会被导入?

**编辑 由于安全原因我不能给出DLL,为了描绘我的场景,我有TableA和TableB共享相同的结构:

  • 索引号(主键,索引,自动增量)
  • 名称(varchar)
  • 姓氏(varchar)
  • 状态(varchar)
  • 类型(varchar)
  • 导入日期(日期)

在我的数据流任务中使用OLE DB源,以下查询用于确定应从TableA导入到TableB(OLE DB目标)的情况:

SELECT TOP(2000) * 
FROM TableA 
 WHERE Status = '' 
  AND [Type] = 'New Case' 
ORDER BY IndexNumber ASC

现在这些案例从TableA导入到TableB,我想更新表A中的案例,不再重新导入它们。 TableB中的数据经常被移动到另一个数据库,因此我不能将其用于比较。

2 个答案:

答案 0 :(得分:1)

我将如何做到这一点:

我会在控制流的末尾添加一个Execute SQL Task,将原始表中的这些前2000条记录更新为其他状态(status = 3或其他)。这样,由于您已经在查询中进行了空检查,因此它不会在您下次运行时选择那些初始2000记录。

答案 1 :(得分:1)

我建议你使用这种模式:

  1. 首先更新源表并将1000条记录标记为'准​​备提取',即将它们设置为1
  2. 接下来,选择源表中准备提取的所有记录

  3. 最后,如果摘录成功,请将1(准备提取)更新为2(提取确定)