# 使用标准、高级或企业订阅复制数据

设置复制任务：

1. 在数据集成 &gt; 管道项目中，单击新建 &gt; 项目。

2. 在新建项目对话框中，执行以下操作：

   1. 为您的项目提供名称。

   2. 选择要在其中创建项目的空间。

   3. 任选地，提供描述。

   4. 选择 Replication 作为用例。

   5. 如果要创建一个空项目而不配置任何设置，请清除打开复选框（可选）。

   6. 单击创建。

      将出现以下情况之一：

      * 如果选择了新建项目对话框中的打开复选框（默认值），则项目将打开。
      * 如果清除了新建项目对话框中的打开复选框，则该项目将添加到项目列表中。您可以稍后通过从项目的 菜单中选择打开the 更多 icon来打开项目。

3. 项目打开后，单击复制数据。

   项目打开后，单击复制数据。

4. 在常规选项卡中，指定复制任务的名称和说明。然后，单击下一步。

5. 在选择源连接选项卡中，选择到源数据的连接。从操作列中的菜单中选择编辑，可以选择编辑连接设置。

   信息注释如果您在任务已准备好之后更改源连接或源数据网关，则必须[重新创建所有数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Managing-datasets.htm#:~:text=the%20storage%20task.-,Recreating%20datasets,-You%20can%20recreate)。

   如果尚未创建到数据源的连接，则需要通过单击选项卡右上角的创建连接来创建连接。

   您可以使用左侧的筛选器筛选连接列表。可以根据源类型、网关、空间和所有者筛选连接。连接列表上方的所有筛选器按钮显示当前筛选器的数量。您可以使用此按钮关闭或打开左侧的筛选器 面板。当前活动的筛选器也显示在可用连接列表的上方。

   您也可以从右侧的下拉列表中选择上次修改时间、上次创建时间或按字母数字顺序来对列表进行排序。单击列表右侧的箭头可以更改排序顺序。

   选择数据源连接后，可以选择单击选项卡右上角的测试连接（推荐），然后单击下一步。

6. 在选择数据集选项卡中，选择要包含在复制任务中的表和/或视图。您还可以使用通配符并创建选择规则，如[从数据库选择数据](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/Landing-data-data-sources.htm#Selectin)中所述。

7. 在选择目标连接选项卡中，从可用连接列表中选择目标，然后单击下一步。在功能方面，该选项卡与前面描述的选择源连接选项卡相同。

   信息注释若在任务已经准备好后更改目标连接，则必须[重新创建所有数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Managing-datasets.htm#:~:text=the%20storage%20task.-,Recreating%20datasets,-You%20can%20recreate)。

8. 在设置选项卡中，可以选择更改以下设置，然后单击下一步。

   Replication 模式

   信息注释从 SaaS 应用程序源进行复制时，默认情况下会启用满负载复制模式，并且不能禁用。

   * 全量加载： 将数据从选定的源表加载到目标平台，并在必要时创建目标表。当任务启动时，满负载会自动发生，但如果需要，也可以手动执行。

     信息注释在使用 SaaS 应用程序连接器时，此设置不可用。

   * 应用更改： 使目标表与源表所做的任何更改保持同步。

   * 存储更改： 将对源表的更改存储到更改表（每个源表一个）。

     有关更多信息，请参阅[存储更改](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings.htm#Store)。

   使用 数据移动网关 时，几乎实时地从源捕获更改。当不使用 数据移动网关 时（通过在连接器设置中将数据网关设置为无），将根据调度程序设置捕获更改。默认的更改捕获间隔为每六小时一次。有关更多信息，请参阅[Replication 设置](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings.htm#Scheduli)。

   应用更改模式

   信息注释在复制到数据仓库目标或使用 Qlik Talend Cloud Starter 订阅工作时，您无法选择要使用的应用更改模式。更改将始终应用于批量优化模式，以获得最大效率。但复制到 Snowflake 目标且加载方法设置为 Snowpipe 数据流时除外。在这种情况下，虽然仍无法选择使用哪种应用更改模式，但更改将始终在事务性模式下应用。

   使用以下方法之一将更改应用于目标表：

   * 批量优化：这是默认设置。选择此选项后，将分批应用更改。进行预处理操作，以最有效的方式将事务分组为批。
   * 事务性：选择此选项可以按照提交的顺序单独应用每个事务。在这种情况下，可以确保所有表都具有严格的引用完整性。

   暂存区域连接

   当复制到下面列出的数据仓库时，您需要设置一个暂存区域。数据在转移到仓库之前在暂存区进行处理和准备。

   * [Amazon Redshift](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/redshift-target.htm)
   * [Microsoft Fabric](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/fabric-target.htm)
   * [Databricks](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/databricks-target.htm)

   选择现有暂存区域，或单击新建以定义新的暂存区域，然后按照[连接至云存储](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/cloud-storage-connections.htm)中的说明进行操作。

   要编辑连接设置，请单击编辑。要测试连接（推荐），请单击测试连接。

   有关哪些数据仓库支持哪些暂存区域的信息，请参阅中的支持作为暂存区[目标平台用例和支持的版本](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/data-project-connections.htm#ar_app_supported_dbversions_993761142_cjaehbcc)列。

   复制计划程序

   信息注释

   此设置仅在以下用例中可用：

   * 使用 SaaS 应用程序连接器时。
   * 当访问数据源时，如果没有 数据移动网关。

   有关 数据移动网关 的优势和需要它的用例的信息，请参阅[Qlik Data Gateway - Data Movement](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm)。

   * Replicate 数据频率： 您可以安排从数据源捕获更改的频率，并设置开始日期和时间。任务设置向导允许您设置基本的调度频率。完成任务设置后，提供了额外的计划选项。

     有关所有调度选项的说明，请参阅[Scheduling tasks](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Deploying/Scheduling-tasks.htm)。

   有关根据数据源类型和订阅层的最小调度间隔的信息，请参阅[允许的最小调度间隔](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/subscription-options-QTC.htm#Minimum)。

9. 在摘要选项卡中，将显示数据管道的可视化信息。如果某些选定的数据集不支持 CDC，则将显示两个管道：一个用于 CDC 任务，另一个用于重新加载任务。选择是打开 &lt;name&gt; 数据任务还是什么都不做，然后单击创建。

   根据您的选择，将打开任务或显示项目列表。

10. 如果选择打开任务，数据集选项卡将显示所选源表格的结构和元数据。这包括所有显式列出的表以及与选择规则匹配的表。

    如果要从数据源中添加更多表，请单击选择源数据。

11. 可选，按照[Replication 设置](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings.htm)中的描述更改任务设置。

12. 您可以对数据集执行转换、筛选数据或添加列。

    有关更多信息，请参阅[管理数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Managing-datasets.htm)。

13. 添加所需的转换后，可以通过单击验证数据集来验证数据集。如果验证失败，请先解决错误，然后再继续。

    有关更多信息，请参阅[验证和调整数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Managing-datasets.htm#Validati)。

14. 准备好后，单击准备对数据任务进行编目并准备好执行。

    信息注释

    * 准备采用满负载复制模式配置的数据任务时，将会应用[任务设置的满负载选项卡](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings.htm)中定义的设置。

    * 默认情况下，初始准备操作将删除并重新创建任何现有目标表。您可以按照下面[在初始准备期间保留现有目标表](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-other-subscriptions.htm#Retainin)中的步骤覆盖默认设置。

15. 准备好数据任务后，单击运行。

    有关恢复任务和运行任务的其他方法的信息，请参阅[高级运行选项](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating_advanced_run.htm)。

16. 复制任务现在应该开始了，您可以在监视器中看到进度。有关更多信息，请参阅[监视单个数据任务](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Monitoring-data-tasks.htm#Monitori)

## 在初始准备期间保留现有目标表

默认情况下，初始准备操作会删除并重新创建任何现有目标表。然而，在某些情况下，您可能希望保留现有的目标表。例如，如果您导入的项目包含已运行的数据任务，您可以从现有目标记录的最后一个时间戳或位置之后开始（恢复）数据任务。

信息注释从 SaaS 应用程序源复制时不支持。

为此：

1. 在[完全加载任务设置](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings.htm#Basic)中，将如果目标表已存在设置为忽略。

   信息注释除了在数据任务准备阶段应用之外，此设置还将在每次重新加载表时应用。

2. 准备任务。

3. 任务准备好后，打开[高级运行选项对话框](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating_advanced_run.htm)并选择表已加载。开始处理以下更改：。为防止复制目标记录，请输入一个日期和时间或源位置（取决于数据源），该日期和时间或源位置应紧随现有目标记录的最后一个时间戳或位置之后。

4. 运行任务。

## 设置数据集的加载优先级

您可以通过为每个数据集指定加载优先级来控制数据任务中数据集的加载顺序。例如，如果您想先加载较小的数据集，然后再加载较大的数据集，这就很有用。

1. 点击加载优先级。

2. 为每个数据集选择加载优先级。

   默认加载优先级为正常。数据集将按以下优先顺序加载：

   * 最高

   * 较高

   * 高

   * 正常

   * 低

   * 较低

   * 最低

   具有相同优先级的数据集不分先后加载。

3. 单击确定。

信息注释来自 SaaS 应用程序源的数据集可能包含加载顺序依赖关系。设置负载优先级时应考虑这一点。

## 模式演变

模式演化允许您轻松检测多个数据源的结构更改，然后控制这些更改将如何应用于您的任务。模式演化可用于检测对源数据模式所做的 DDL 更改。您还可以自动应用一些更改。

信息注释模式演化不适用于 Qlik Talend Cloud Starter 订阅。当使用 SaaS 应用程序连接器时，仅支持数据类型更改。

对于每种更改类型，您可以在任务设置的模式演变部分选择如何处理更改。您可以应用更改、忽略更改、挂起表或停止任务处理。

您可以设置用于处理每种更改类型的 DDL 更改的操作。某些操作并不适用于所有更改类型。

* 应用于目标

  自动应用更改。

* 忽略

  忽略更改。

* 挂起表

  挂起表。监视器将显示表格错误。

* 停止任务

  停止任务处理。如果您想手动处理所有架构更改，这很有用。这也将停止调度，即不会执行计划运行。

支持以下更改：

* 添加列

* 重命名列

* 更改列数据类型

* 删除表

* 放置列

* 添加匹配选择模式的表格

  如果使用选择规则添加与模式匹配的数据集，则将检测并添加符合模式的新表。

有关任务设置的更多信息，请参阅 [自动模式演进](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings.htm#Schema)

您还可以获得有关使用模式演进处理的变更的通知。有关更多信息，请参阅[设置操作更改通知](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Notifications.htm)。

### 模式演变的限制

模式演变有以下限制适用：

* 只有使用 CDC 作为更新方法时，才支持模式演变。

* 更改模式演变设置后，必须重新准备任务。

* 如果重新命名表，则不支持模式演变。在这种情况下，您必须在准备任务前刷新元数据。

* 如果您正在设计任务，则必须刷新浏览器才能接收模式演变更改。您可以设置通知，以便在更改时收到警报。

* 在登陆任务中，不支持删除列。删除列和添加列会导致表格错误。

* 在登陆任务中，删除表操作不会将表丢弃。如果删除一个表后再添加一个表，只会截断旧表，而不会添加新表。

* 并非所有目标都能更改列的长度，这取决于目标数据库的支持情况。

* 如果更改了列名，使用该列定义的显式转换将不会生效，因为这些转换是基于列名的。

* 刷新元数据的限制也适用于模式演变。

* 如果任务包含尚未准备好的设计更改，并且在任务运行时检测到源架构演变更改，则任务将停止以避免冲突。准备待定设计更改并再次运行任务。

捕获 DDL 更改时，会受到以下限制：

* 当源数据库中发生一系列快速操作时（例如，DDL &gt; DML &gt; DDL），Qlik Talend Data Integration 可能会以错误的顺序解析日志，导致数据丢失或行为不可预测。为了尽量减少这种情况发生的可能性，最佳做法是等待更改应用于目标，然后再执行下一个操作。

  例如，在变更捕获过程中，如果源表被快速连续重命名多次（第二次操作将其重命名回原始名称），则可能会遇到该表已存在于目标数据库中的错误。

* 如果更改任务中使用的表的名称，然后停止任务，则在任务恢复后 Qlik Talend Data Integration 将不会捕获对该表所做的任何更改。

* 不支持在任务停止时重命名源表。

* 不支持重新分配表的主键列（因此不会写入 DDL 历史控制表）。

* 当一列的数据类型发生变化，并且*在*任务停止时重命名了（相同的）列时，DDL 更改将在任务恢复时在 DDL 历史控制表中显示为“删除列”，然后显示为“添加列”。请注意，延迟延长也可能导致相同的行为。

* 在任务停止时对源执行的 CREATE TABLE 操作将在任务恢复时应用于目标，但不会在 DDL 历史控制表中记录为 DDL。

* 与元数据更改相关的操作（如 ALTER TABLE、reorg、重建聚集索引等）如果在以下情况下执行，可能会导致不可预测的行为：

  * 满负载期间

    -或者-

  * 在开始处理更改自时间戳和当前时间之间（即用户在高级运行选项对话框中单击确定的时刻）。

    示例：

    IF：

    指定的开始处理更改自时间为上午 10:00。

    AND：

    上午 10:10 时，雇员表中添加了名为年龄的列。

    AND：

    上午 10:15，用户在高级运行选项对话框中单击确定。

    THEN：

    10:00 至 10:10 之间发生的更改可能会导致 CDC 错误。

  信息注释

  在上述任何情况下，必须重新加载受影响的表，以便数据正确已移动到目标。

* DDL 语句 `ALTER TABLE ADD/MODIFY <column> <data_type> DEFAULT <>` 不会将默认值复制到目标，并且新的/修改的列设置为 NULL。请注意，即使过去执行了添加/修改列的 DDL，也可能发生这种情况。如果新的/修改的列可以为空，则源端点会在记录 DDL 本身之前更新所有表行。因此，Qlik Talend Data Integration 会捕获更改，但不会更新目标。由于新列/修改列被设置为 NULL，如果目标表没有主键/唯一索引，后续更新将生成 "零行受影响 "消息。

* 不会捕获对 TIMESTAMP 和 DATE 精确度列的修改。

### 处理未自动应用的更改

这描述了如何处理无法应用于目标的更改，即操作为“忽略”、“挂起”或“停止任务”时的更改。

| DDL 更改 | 实施变更 | 保留当前状态 |
| --- | --- | --- |
| 添加列 | 刷新元数据，准备任务，然后运行任务。 | 无需操作 |
| 创建表格 | 刷新元数据，准备任务，然后运行任务。 | 无需操作 |
| 更改列数据类型 | 如果没有限制适用，则检查限制：<br><br>刷新元数据，准备任务，然后运行任务。 | 并不总是支持当前状态的保留。可能的解决方法<br><br><ul> <li> <p>手动更改列数据类型这需要在下游任务中重复进行。</p> </li> <li> <p>创建一个新列，将旧列导向新列，然后手动创建一个视图，将两列合并。</p> </li> </ul> |
| 重命名表 | 如果没有限制适用，则检查限制：<br><br>准备任务，然后运行任务。 | 为旧名称定义显式重命名规则。 |
| 重命名列 | 如果没有限制适用，则检查限制：<br><br>刷新元数据，准备任务，然后运行任务。 | 刷新元数据，然后为旧名称定义显式重命名规则。 |

## 更改网关或连接

更改目标或源连接，或源网关时，必须重新创建表。

## 查看项目信息

点击菜单条形上的 the 信息 icon 以查看项目信息，例如：

* 所有者

* 空间

* 数据平台

* 项目 Id

## 复制数据时的限制和考虑事项

转换受以下限制：

* 语序为从右向左的语言的列不支持转换。

* 无法对名称中包含特殊字符（例如 #、\、/、-）的列执行转换。

* LOB/CLOB 数据类型唯一支持的转换是删除目标上的列。

* 不支持使用转换重命名列，然后添加同名的新列。

移动的列不支持更改可空性，无论是直接更改还是使用转换规则。但是，默认情况下，任务中创建的新列可以为空。