在SSIS中使用tsql MERGE语句在数据库之间复制数据

时间:2013-11-29 16:24:36

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

我正在尝试做一些我认为应该非常简单的事情,但我看不出如何实际做到这一点。

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

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

我正在使用SQL Server 2012。

我认为最好的方法是使用包含tsql MERGE语句的'execute sql task'的SSIS包。

我无法看到如何实际执行该过程所需的两个数据库连接。

我在网上看了很多书,虽然它说有可能,却找不到任何例子。

任何帮助都会非常感激。

感谢。

2 个答案:

答案 0 :(得分:2)

使用增量加载模式是解决此问题的方法。

http://www.sqlservercentral.com/stairway/72494/

上查看精彩的解释和示例

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

答案 1 :(得分:0)

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

探索的另一个选择是复制。根据您的声明,这需要每天晚上完成,您可以创建快照复制,其中一个表作为源,另一个作为目标。另一方面,如果您希望数据几乎实时地通过,或者两个表都可以由应用程序更改,则可以使用事务复制。关于MSDN

的更多信息