执行多个表的增量加载

适用于:SQL Server Azure 数据工厂中的 SSIS Integration Runtime

在主题 通过变更数据捕获改善增量加载中,关系图演示的是仅对一个表执行增量加载的基本包。 但是,加载一个表并不像执行多个表的增量加载那样常见。

在执行多个表的增量加载时,有些步骤必须对所有表执行一次,而有些步骤则必须针对每个源表重复执行。 在 Integration Services 中提供了多个用于实现这些步骤的选项:

  • 使用父包和子包。

  • 在一个包中使用多个数据流任务。

使用一个父包和多个子包来加载多个表

可以使用父包来执行只需执行一次的步骤。 子包将执行针对各源表的步骤。

创建父包以执行只需执行一次的步骤

  1. 创建父包。

  2. 在控制流中,使用执行 SQL 任务或 Integration Services 表达式来计算终结点。

    有关如何计算端点的示例,请参阅 指定变更数据的间隔

  3. 如果需要,可使用 For 循环容器来延迟执行,直到所选周期的变更数据准备就绪。

    有关 For 循环容器的示例,请参阅 确定变更数据是否已准备就绪

  4. 使用多个执行包任务针对每个要加载的表执行子包。 使用父包变量配置将父包中计算的端点传递到各个子包。

    有关详细信息,请参阅 执行包任务在子包中使用变量和参数的值

创建子包以执行针对各源表的步骤

  1. 应为每个源表各创建一个子包。

  2. 在控制流中,使用脚本任务或执行 SQL 任务汇集将用于查询变更的 SQL 语句。

    有关如何汇集查询的示例,请参阅 准备查询变更数据

  3. 在每个子包中使用一个的数据流任务加载变更数据,并将变更数据应用到目标。 按照下面的步骤说明配置数据流:

    1. 在数据流中,使用源组件来查询变更表中在所选端点内发生的变更。

      有关如何查询变更表的示例,请参阅 检索和了解变更数据

    2. 使用有条件拆分转换将插入、更新和删除操作定向到不同的输出,以便于进行适当的处理。

      有关如何配置此转换以定向输出的示例,请参阅 处理插入、更新和删除

    3. 使用目标组件将插入操作应用到目标。 使用具有参数化的 UPDATE 和 DELETE 语句的 OLE DB 命令转换,将更新和删除操作应用到目标。

      有关如何使用此转换来应用更新和删除操作的示例,请参阅 将变更应用到目标

在单个包中使用多个数据流任务加载多个表

或者,您也可以使用针对每个要加载的源表都包含一个独立数据流任务的单个包。

在单个包中使用多个数据流任务加载多个表

  1. 创建一个包。

  2. 在控制流中,使用执行 SQL 任务或 Integration Services 表达式来计算终结点。

    有关如何计算端点的示例,请参阅 指定变更数据的间隔

  3. 如果需要,可使用 For 循环容器延迟执行过程,直到所选间隔的变更数据准备就绪。

    有关 For 循环容器的示例,请参阅 确定变更数据是否已准备就绪

  4. 使用脚本任务或执行 SQL 任务汇集将用于查询变更的 SQL 语句。

    有关如何汇集查询的示例,请参阅 准备查询变更数据

  5. 使用多个数据流任务加载各源表中的变更数据,并将变更数据应用到目标。 按照下面的步骤说明配置各个数据流。

    1. 在各个数据流中,使用源组件来查询变更表中在所选端点内发生的变更。

      有关如何查询变更表的示例,请参阅 检索和了解变更数据

    2. 使用有条件拆分转换将插入、更新和删除操作定向到不同的输出,以便于进行适当的处理。

      有关如何配置此转换以定向输出的示例,请参阅 处理插入、更新和删除

    3. 使用目标组件将插入操作应用到目标。 使用具有参数化的 UPDATE 和 DELETE 语句的 OLE DB 命令转换,将更新和删除操作应用到目标。

      有关如何使用此转换来应用更新和删除操作的示例,请参阅 将变更应用到目标