代码之家  ›  专栏  ›  技术社区  ›  Euclid

是否可以用SSIS插入或类似内容覆盖?

  •  0
  • Euclid  · 技术社区  · 15 年前

    我有一个.csv文件,在一个ssis包中,它可以被转换成600万行。我在SQLServer2005中有一个超过2500万行的表。.csv文件中的数据与表中的数据重复,如果行已经存在,是否可以更新行,或者什么方法可以有效地实现这一点?

    3 回复  |  直到 15 年前
        1
  •  5
  •   Cade Roux    15 年前

    通过对每行调用一个查找或SQL命令数据流组件来执行upsert,将6m行与25m行进行比较不会太高效。在这些情况下,有时将它们快速加载到临时表中并使用单个基于集合的SQL命令执行upsert是最有效的方法。

    即使您决定进行查找,也要将流拆分为两个流,一个流用于插入,另一个流用于插入到临时表中进行更新操作。

        2
  •  2
  •   Richard Marskell - Drackir Sunil Tandon    15 年前

    如果您不介意丢失旧数据(即最新的文件才是最重要的,而不是表中的内容),您可以删除表中的所有记录,然后重新插入它们。

    您还可以加载到临时表中,并确定需要更新的内容以及需要从中插入的内容。

        3
  •  1
  •   grapefruitmoon    15 年前

    可以使用“查找”任务标识csv和表中的任何匹配行,然后将该行的输出传递给另一个表或数据流,并使用SQL任务执行所需的更新。