【问题标题】:Using a tsql MERGE statement in SSIS to copy data between databases在 SSIS 中使用 tsql MERGE 语句在数据库之间复制数据
【发布时间】:2013-11-29 16:24:35
【问题描述】:

我正在尝试做一些我认为应该非常简单的事情,但我不知道该怎么做。

我有两个数据库,它们包含具有相同结构的同一张表。

我想将数据从一个数据库导入到另一个数据库,在它们不存在的地方插入新行并更新与 id 匹配的行。这需要每天晚上进行。

我使用的是 SQL Server 2012。

我认为最好的方法是使用带有“执行 sql 任务”的 SSIS 包,其中包含 tsql MERGE 语句。

我看不出如何实际进行进程所需的两个数据库连接。

我在网上看了很多书,虽然说有可能,但没有找到例子。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • TSQL 合并不会完成此任务。看Incremental Load Pattern
  • 感谢指针 billinkc。我点击了链接,最后看到了“安迪伦纳德有一个很棒的系列,集成服务的阶梯,他详细介绍了增量负载模式。”我最终就是这样做的。

标签: sql-server ssis sql-server-2012 etl


【解决方案1】:

使用增量负载模式是解决这个问题的方法。

http://www.sqlservercentral.com/stairway/72494/查看一个很好的解释和例子

我仍然认为 Merge 会是一种更简洁的方式,您可以提供源数据库和目标数据库。

【讨论】:

    【解决方案2】:

    您应该能够使用 SSIS 中的合并转换来执行此操作。关于连接,您可以在包级别创建 2 个连接管理器。然后,添加一个数据流任务并将两个 OLEDB 源的输出通过管道传输到合并转换。做之前一定要确保数据已经排序,否则会出错。

    另一个探索的选项是复制。根据您需要每天晚上执行此操作的声明,您可以创建快照复制,其中一个表作为源,另一个作为目标。另一方面,如果您希望数据近乎实时地通过,或者如果两个表都可以由应用程序更改,您可以使用事务复制。更多信息请访问MSDN

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 2022-08-03
      • 1970-01-01
      • 2011-09-12
      相关资源
      最近更新 更多