处理插入、更新和删除
在用于执行变更数据的增量加载的 Integration Services 包的数据流中,第二个任务是分隔插入、更新和删除操作。然后,可以使用相应的命令将它们应用到目标。
![]() |
---|
为执行变更数据增量加载的包设计数据流的过程中,第一个任务是配置用于运行查询以检索变更数据的源组件。有关此组件的详细信息,请参阅检索和了解变更数据。有关用于执行变更数据增量加载的包的总体创建过程的说明,请参阅通过变更数据捕获改善增量加载。 若要查看演示包中变更数据捕获的用法的完整的、端对端示例,请参阅 Codeplex 上的“Change Data Capture for Specified Interval Package”(指定间隔的变更数据捕获包)示例和“Change Data Capture since Last Request Package”(自上次请求以来的变更数据捕获包)示例。 |
关联友好值以分隔插入、更新和删除操作
在检索变更数据的示例查询中,cdc.fn_cdc_get_net_changes_<capture_instance> 函数仅返回名为 __$operation 的元数据列。此元数据列包含一个序号值,该值指示哪个操作导致更改。
![]() |
---|
有关使用和调用 cdc.fn_cdc_get_net_changes_<capture_instance> 函数的查询的详细信息,请参阅创建函数以检索变更数据。 |
将序号值与其相应的操作匹配,不像使用操作的助记键那样容易。例如,D 可以简便地表示删除操作,而 I 则可表示插入操作。在主题创建函数以检索变更数据中创建的示例查询执行了此转换,即将序号值转换为新列中返回的友好字符串值。下面的代码段显示了此转换:
select
...
case __$operation
when 1 then 'D'
when 2 then 'I'
when 4 then 'U'
else null
end as CDC_OPERATION
配置条件性拆分转换以定向插入、更新和删除操作
若要将变更数据行定向到三个输出中的一个输出,条件性拆分转换是理想的选择。该转换只是检索各行中 CDC_OPERATION 列的值,并确定该变更是插入操作、更新操作还是删除操作。
![]() |
---|
CDC_OPERATION 列包含一个从 __$operation 列中的数值派生的友好字符串值。 |
使用条件性拆分转换拆分要进行处理的插入、更新和删除操作
在**“数据流”**选项卡上,添加一个条件性拆分转换。
将 OLE DB 源的输出连接到条件性拆分转换。
在**“条件性拆分转换编辑器”**的下部窗格中,输入下面三行以指定三个输出
输入条件为 CDC_OPERATION == "I" 的行,以将已插入的行定向到插入操作的输出。
输入条件为 CDC_OPERATION == "U" 的行,以将已更新的行定向到更新操作的输出。
输入条件为 CDC_OPERATION == "D" 的行,以将已删除的行定向到删除操作的输出。
下一步
在拆分要处理的行之后,下一步是将更改应用到目标中。
下一个主题:将变更应用到目标
|