有了这些知识,您将需要编写一个查询以从目标表中撤回密钥 SELECT CO.CustomerId, CO.OrderId FROM dbo.CustomerOrder CO 如果您知道该进程仅传输当前年份的数据,请在上述查询中添加一个过滤器以限制返回的行数 . 这样做的原因是内存保护 - 您希望SSIS快速运行,不要带回它永远不需要的无关列或行 .
在数据流中,使用该查询添加Lookup Transformation . 您不必存在于目标数据库中,因此这些是新的行 . 2005假设每一行都匹配或错误 . 您需要单击配置错误输出...按钮并选择"Redirect Rows" . 2008年有一个选项"Specify how to handle rows with no matching entries",你会想要"Redirect rows to no match output."
现在取No match输出分支(2008)或错误输出分支(2005)并将其连接到目的地 .
这种方法无法了解有关检测和处理变更的选项的一系列文章.Page 1314611_ s _1342612系列文章 .
3 回答
在数据流任务中,您可以在其中传输数据,您可以插入查找转换 . 在查找中,您可以指定数据源(表或查询,最适合您的方式) . 选择数据源时,可以转到“列”视图并创建映射,在该映射中连接两个表的CustomerID,日期和数量 .
在一般视图中,您可以配置匹配/非匹配行会发生什么 . 只需获取不匹配的输出并将其指向DB目标 .
您需要确定表中数据唯一的原因 . 如果它是一个客户表,那么它可能是13029的customerid . 但是如果它是客户订单表,那么它可能是CustomerId和OrderDate的组合(也许不是,我在同一日期放置了两个独特的订单) . 根据您 table 的设计,您将了解答案 .
有了这些知识,您将需要编写一个查询以从目标表中撤回密钥
SELECT CO.CustomerId, CO.OrderId FROM dbo.CustomerOrder CO
如果您知道该进程仅传输当前年份的数据,请在上述查询中添加一个过滤器以限制返回的行数 . 这样做的原因是内存保护 - 您希望SSIS快速运行,不要带回它永远不需要的无关列或行 .在数据流中,使用该查询添加Lookup Transformation . 您不必存在于目标数据库中,因此这些是新的行 . 2005假设每一行都匹配或错误 . 您需要单击配置错误输出...按钮并选择"Redirect Rows" . 2008年有一个选项"Specify how to handle rows with no matching entries",你会想要"Redirect rows to no match output."
现在取No match输出分支(2008)或错误输出分支(2005)并将其连接到目的地 .
这种方法无法了解有关检测和处理变更的选项的一系列文章.Page 1314611_ s _1342612系列文章 .
您是否考虑过使用T-SQL MERGE语句? http://technet.microsoft.com/en-us/library/bb510625.aspx
它将比较已定义字段上的两个表,并在匹配与否时执行操作 .