本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
表和集合设置规则和操作
您可以使用表设置指定要应用于指定操作的选定表或视图的任何设置。表设置规则是可选的,具体取决于您的终端节点和迁移要求。
MongoDB 和 Amazon DocumentDB 数据库不使用表和视图,而是将数据记录存储为一起收集在中的文档集合. 任何 MongoDB 或 Amazon DocumentDB 终端节点的单个数据库是由数据库名称标识的一组特定集合。
从 MongoDB 或 Amazon DocumentDB 源迁移时,您使用的 parallel 加载设置略有不同。在这种情况下,请考虑所选集合而不是表和视图的 parallel 加载设置的自动分段或范围细分类型。
对于使用表设置规则类型的表映射规则,您可以应用以下参数。
参数 | 可能的值 | 描述 |
---|---|---|
rule-type |
table-settings
|
一个将规则应用于选择规则所指定的表、视图或集合的值。 |
rule-id |
一个数字值。 | 一个用于标识规则的唯一数字值。 |
rule-name |
一个字母数字值。 | 一个用于标识规则的唯一名称。 |
object-locator |
一个带以下参数的对象:
|
特定架构和表或视图的名称,或特定数据库和集合的名称(无通配符)。 |
parallel-load |
一个带以下参数的对象:
|
该值指定由
有关 parallel 加载的更多信息,请参阅对所选表、视图和集合使用 parallel 加载. |
type |
parallel-load 的以下操作之一:
|
用于标识要并行加载的表、视图或集合分区、子分区或段的机 parallel。 |
number-of-partitions |
(可选)何时type 是partitions-auto 对于 MongoDB 或 Amazon DocumentDB 终端节点的指定集合,此参数指定用于迁移的分区(段)总数。默认值为 16。 |
指定要 parallel 行加载的分区的确切数目。 |
collection-count-from-metadata |
(可选)何时type 是partitions-auto 对于 MongoDB 或 Amazon DocumentDB 终端节点的指定集合,此参数设置为true 、Amazon DMS使用估计的收集计数来确定分区的数量。如果此参数设置为false 、Amazon DMS使用实际的收集数量。默认为 true 。 |
指定是使用估计的集合计数还是实际的收集计数来计算要 parallel 加载的分区数。 |
max-records-skip-per-page |
(可选)何时type 是partitions-auto 对于 MongoDB 或 Amazon DocumentDB 终端节点的指定集合,这是确定每个分区的边界时一次跳过的记录数。Amazon DMS使用分页跳过方法来确定分区的最小边界。默认值为 10,000。 |
指定在确定每个分区的边界时一次跳过的记录数。从默认值中设置相对较大的值可能会导致游标超时和任务失败。从默认值中设置一个相对较低的值会导致每页操作更多,而且满载速度更慢。 |
batch-size |
(可选)何时type 是partitions-auto 对于 MongoDB 或 Amazon DocumentDB 终端节点的指定集合,此整数值限制了在一次往返批次中返回的文档数量。如果批处理大小为零 (0),光标将使用服务器定义的最大批处理大小。默认值为 0。 |
指定在一批中返回的最大文档数。每批都需要往返服务器。 |
number-of-partitions |
(可选)何时type 是partitions-auto 对于 MongoDB 或 Amazon DocumentDB 终端节点的指定集合,此参数指定用于迁移的分区(段)总数。默认值为 16。 |
指定要 parallel 行加载的分区的确切数目。 |
collection-count-from-metadata |
(可选)何时type 是partitions-auto 对于 MongoDB 或 Amazon DocumentDB 终端节点的指定集合,此参数设置为true 、Amazon DMS使用估计的收集计数来确定分区的数量。如果此参数设置为false 、Amazon DMS使用实际的收集数量。默认为 true 。 |
指定是使用估计的集合计数还是实际的收集计数来计算要 parallel 加载的分区数。 |
max-records-skip-per-page |
(可选)何时type 是partitions-auto 对于 MongoDB 或 Amazon DocumentDB 终端节点的指定集合,这是确定每个分区的边界时一次跳过的记录数。Amazon DMS使用分页跳过方法来确定分区的最小边界。默认值为 10,000。 |
指定在确定每个分区的边界时一次跳过的记录数。从默认值中设置相对较大的值可能会导致游标超时和任务失败。从默认值中设置一个相对较低的值会导致每页操作更多,而且满载速度更慢。 |
batch-size |
(可选)何时type 是partitions-auto 对于 MongoDB 或 Amazon DocumentDB 终端节点的指定集合,此整数值限制了在一次往返批次中返回的文档数量。如果批处理大小为零 (0),光标将使用服务器定义的最大批处理大小。默认值为 0。 |
指定在一批中返回的最大文档数。每批都需要往返服务器。 |
partitions |
当 type 为 partitions-list 时,这是一个字符串数组,用于指定并行加载的分区的名称。 |
要并行加载的分区的名称。 |
subpartitions |
(仅限 Oracle 终端节点)当 type 为 partitions-list 时,这是一个字符串数组,用于指定并行加载的子分区的名称。 |
要并行加载的子分区的名称。 |
columns |
何时type 是ranges ,这是设置为列名称的字符串数组,用于标识要 parallel 加载的基于范围的表、视图或集合段。 |
用于标识要 parallel 行加载的基于范围的表、视图或集合段的列的名称。 |
boundaries |
当 type 为 ranges 时,这是列值数组的数组。每个列值数组都包含 columns 指定的数量和顺序的列值。列值数组指定表、视图或集合段的上边界。每个附加列值数组都会为一个附加表、视图或集合段添加上边界。所有这些基于范围的表、视图或集合段都是 parallel 加载的。 |
用于标识要 parallel 行加载的基于范围的表、视图或集合分区的列值。 |
lob-settings |
一个带以下参数的对象:
|
一个值,指定由 object-locator 选项标识的表或视图的 LOB 处理。指定的 LOB 处理仅覆盖此表或视图的任何任务 LOB 设置。有关使用 LOB 设置参数的更多信息,请参阅为所选表或视图指定 LOB 设置. |
mode |
使用以下值指定所选表或视图中 LOB 的迁移处理:
|
用于迁移 LOB 的机制。 |
bulk-max-size |
此值的影响取决于 mode 。 |
LOB 的最大大小(以 KB 为单位)。仅当您需要复制较小 LOB 或目标终端节点不支持无限制的 LOB 大小时,才指定此选项。 |
表格设置中的通配符受到限制
使用百分比通配符 ("%"
) 在"table-settings"
如下所示,源数据库不支持规则。
{ "rule-type": "table-settings", "rule-id": "8", "rule-name": "8", "object-locator": { "schema-name": "ipipeline-prod", "table-name": "%" }, "parallel-load": { "type": "partitions-auto", "number-of-partitions": 16, "collection-count-from-metadata": "true", "max-records-skip-per-page": 1000000, "batch-size": 50000 } }
如果您使用"%"
中的"table-settings"
如图所示的规则,Amazon DMS返回以下异常。
Error in mapping rules. Rule with ruleId = x failed validation. Exact schema and table name required when using table settings rule.
此外,Amazon建议您不要使用单个任务加载大量的大型收藏夹parallel-load
. 请注意:Amazon DMS限制资源争用以及并行加载的区段数量,parallel 加载的区段数量MaxFullLoadSubTasks
任务设置参数,最大值为 49。
相反,通过指定每个集合,为最大的集合指定源数据库的所有集合"schema-name"
和"table-name"
单个。此外,正确扩大迁移规模。例如,在足够数量的复制实例中运行多个任务,以处理数据库中的大量大型集合。
对所选表、视图和集合使用 parallel 加载
要加速迁移并提高其效率,可以对选定的关系表、视图和集合使用 parallel 加载。换言之,您可以 parallel 行使用多个线程迁移单个分段表、视图或集合。为此,Amazon DMS 将完全加载的任务拆分为线程,每个表段分配给自己的线程。
使用此并行加载过程,您可以首先让多个线程从源终端节点 parallel 卸载多个表、视图和集合。然后,您可以迁移多个线程,并将相同的表、视图和集合 parallel 加载到目标终端节点。对于某些数据库引擎,您可以按现有分区或子分区对表和视图进行分段。对于其他数据库引擎,你可以有Amazon DMS根据特定参数(自动分段)自动对收藏进行细分。否则,您可以按指定的列值范围对任何表、视图或集合进行分段。
以下源终端节点支持并行加载:
-
Oracle
-
Microsoft SQL Server
-
MySQL
-
PostgreSQL
-
IBM Db2
-
SAP Adaptive Server Enterprise (ASE)
-
MongoDB(仅支持 parallel 满负载的自动分段和范围细分选项)
-
Amazon DocumentDB(仅支持 parallel 满载的自动分段和范围细分选项)
对于 MongoDB 和 Amazon DocumentDB 终端节点,Amazon DMS对于作为 parallel 满负载的范围分割选项的分区键的列,支持以下数据类型。
-
Double
-
字符串
-
ObjectId
-
32 位整数
-
64 位整数
以下目标终端节点支持用于表设置规则的并行加载:
-
Oracle
-
Microsoft SQL Server
-
MySQL
-
PostgreSQL
-
Amazon S3
-
SAP Adaptive Server Enterprise (ASE)
-
Amazon Redshift
-
MongoDB(仅支持 parallel 满负载的自动分段和范围细分选项)
-
Amazon DocumentDB(仅支持 parallel 满载的自动分段和范围细分选项)
要指定并行加载的表、视图和集合的最大 parallel,请使用MaxFullLoadSubTasks
任务设置。要为并行加载任务指定各个表、视图或集合的最大线程数,请使用ParallelLoadThreads
任务设置。要为并行加载任务指定缓冲区大小,请使用 ParallelLoadBufferSize
任务设置。ParallelLoadThreads
和 ParallelLoadBufferSize
的可用性和设置取决于目标终端节点。
有关的更多信息
和ParallelLoadThreads
ParallelLoadBufferSize
设置,请参阅目标元数据任务设置. 有关 MaxFullLoadSubTasks
设置的更多信息,请参阅完全加载任务设置。有关特定于目标终端节点的信息,请参阅相关主题。
要使用并行加载,您可以使用 parallel-load
选项创建一个类型为 table-settings
的表映射规则。在table-settings
规则中,您可以为要 parallel 行加载的单个表、视图或集合指定分段条件。要执行此操作,请将 parallel-load
选项的 type
参数设置为多个选项之一。
如何执行此操作取决于您希望如何为 parallel 加载分段表、视图或集合:
-
按分区(或段)— 使用加载所有现有的表或视图分区(或段)。
partitions-auto
。或者使用仅加载选定的分区partitions-list
使用指定的分区数组进行类型。仅对于 MongoDB 和 Amazon DocumentDB 终端节点,请按以下区段加载所有或指定的集合:Amazon DMS还可以使用
partitions-auto
类型和其他可选table-settings
参数。 -
(仅限 Oracle 终端节点)按子分区使用加载所有现有表或视图子分区。
subpartitions-auto
。或者使用具有指定subpartitions
数组的partitions-list
类型仅加载选定的子分区。 -
按您定义的段加载使用列值边界定义的表、视图或集合段。为此,请使用具有指定
columns
和boundaries
数组的ranges
类型。注意 PostgreSQL 终端节点仅支持此类型的 parallel 加载。MongoDB 和作为源端点的 Amazon DocumentDB 同时支持此范围细分类型和 parallel 满载的自动分段类型(
partitions-auto
)。
要标识要 parallel 加载的其他表、视图或集合,请指定其他table-settings
包含parallel-load
选项。
在以下过程中,您可以了解如何为每种并行加载类型编写 JSON 代码(从最简单到最复杂)。
指定所有表、视图或集合分区或所有表或视图的子分区
-
使用
partitions-auto
类型或subpartitions-auto
类型(但不能同时使用二者)指定parallel-load
。然后,每个表、视图、集合分区(或段)或子分区都会自动分配到自己的线程。
对于某些终端节点,parallel 加载仅包括已为表或视图定义的分区或子分区。对于 MongoDB 和 Amazon DocumentDB 源终端节点,您可以有Amazon DMS根据可选的附加参数自动计算分区(或区段)。这包括
number-of-partitions
、collection-count-from-metadata
、max-records-skip-per-page
和batch-size
。
指定选定表或视图的分区和/或子分区
-
使用
partitions-list
类型指定parallel-load
。 -
(可选)通过将分区名称数组指定为
partitions
的值来包含分区。然后,每个指定的分区将分配到自己的线程。
重要 对于 Oracle 终端节点,在为 parallel 行加载选择分区和子分区时,请确保分区和子分区不会重叠。如果您使用重叠的分区和子分区 parallel 加载数据,则会复制条目,或者由于主键重复冲突而失败。
-
(可选),仅对于 Oracle 终端节点,通过将子分区名称数组指定为的值来包含子分区。
subpartitions
.然后,每个指定的子分区将分配到自己的线程。
注意 并行加载仅包括已为表或视图定义的分区或子分区。
您可以指定表或视图段作为列值范围。执行此操作时,请注意以下列特征:
-
指定索引列可显著提高性能。
-
您可以指定最多 10 个列。
-
您不能使用列来定义具有以下内容的段边界Amazon DMS数据类型:双、浮动、BLOB、CLOB 和 NCLOB
-
不会复制具有 null 值的记录。
指定表、视图或集合段作为列值范围
-
使用
ranges
类型指定parallel-load
。 -
通过列名数组指定为
columns
的值来定义表或视图段之间的边界。对要为其定义表或视图段之间边界的每个列执行此操作。列的顺序很重要。在定义每个边界时,第一列是最重要的,最后一列最不重要,如下所述。
-
通过将边界数组指定为
boundaries
值来定义所有表或视图段的数据范围。边界数组是一个列值数组的数组。要实现此目的,请执行以下步骤:-
将列值数组的每个元素指定为与每个列对应的值。列值数组 代表您要定义的每个表或视图段的上边界。按照您在
columns
数组中指定该列的顺序指定每个列。以源支持的格式输入 DATE 列的值。
-
将每个列值数组按顺序指定为每个段的上边界(从表或视图的底部段到顶部第二个段)。如果您指定的顶部边界上方存在任何行,则这些行将填充表或视图的顶部段。因此,基于范围的段的数量可能比边界数组中的段边界的数量多一个。每个这样的基于范围的段被分配到自己的线程。
将会复制所有非 null 数据,即使您没有为表或视图中的所有列定义数据范围也是如此。
例如,假设您为列 COL1、COL2 和 COL3 定义三个列-值数组,如下所示。
COL1 COL2 COL3 10 30 105 20 20 120 100 12 99 您就可能为总共四个段定义了三个段边界。
为了标识要为每个段复制的行范围,复制实例会对以下四个段中的每个段的这三个列应用搜索。搜索类似于以下内容:
- 段 1
-
复制以下条件为真的所有行:前两列值小于或等于其对应值段 1上限值。此外,第三列的值小于其段 1 上边界值。
- 段 2
-
复制所有行(除外)段 1行)以下内容为真:前两列值小于或等于其对应值段 2上限值。此外,第三列的值小于其段 2 上边界值。
- 段 3
-
复制所有行(除外)段 2行)以下内容为真:前两列值小于或等于其对应值段 3上限值。此外,第三列的值小于其段 3 上边界值。
- 段 4
-
复制所有剩余的行(除了段 1、2 和 3 行)。
在这种情况下,复制实例会创建一个
WHERE
子句来加载每个段,如下所示:- 段 1
-
((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105)))
- 段 2
-
NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120)))
- 段 3
-
NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
- 段 4
-
NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
-
为所选表或视图指定 LOB 设置
您可以通过使用一个或多个 table-settings
对象的 lob-settings
选项创建 table-settings
类型的表映射规则来为一个或多个表设置任务 LOB 设置。
以下源终端节点支持为所选表或视图指定 LOB 设置:
-
Oracle
-
Microsoft SQL Server
-
MySQL
-
PostgreSQL
-
IBM Db2,具体取决于
mode
和bulk-max-size
设置,如下所述 -
SAP Adaptive Server Enterprise (ASE),具体取决于
mode
和bulk-max-size
设置,如下所述
以下目标终端节点支持为所选表或视图指定 LOB 设置:
-
Oracle
-
Microsoft SQL Server
-
MySQL
-
PostgreSQL
-
SAP ASE,具体取决于
mode
和bulk-max-size
设置,如下所述
您只能将 LOB 数据类型用于包含主键的表或视图。
要对选定的表或视图使用 LOB 设置,请使用 lob-settings
选项创建类型为 table-settings
的表映射规则。这样做会指定由 object-locator
选项标识的表或视图的 LOB 处理。在 table-settings
规则中,您可以指定一个具有以下参数的 lob-settings
对象:
-
mode
— 指定处理所选表或视图的 LOB 迁移的机制,如下所示:-
limited
— 默认受限 LOB 模式是最快且最有效的模式。仅当所有 LOB 都较小(大小不超过 100 MB)或目标终端节点不支持无限制 LOB 大小时,才使用此模式。此外,如果使用limited
,则所有 LOB 都必须在为bulk-max-size
设置的大小范围内。在完全加载任务的此模式下,复制实例将所有 LOB 与其他列数据类型一起进行内联迁移,作为主表或视图存储的一部分。但是,实例会将大于您的
bulk-max-size
值的任何迁移 LOB 截断为指定的大小。对于更改数据捕获 (CDC) 加载任务,实例使用源表查找迁移所有 LOB,就像在标准完全 LOB 模式下一样(请参阅下文)。无论 LOB 大小如何,它都会这样做。注意 您只能为完全加载任务迁移视图。
-
unlimited
— 完全 LOB 模式的迁移机制取决于您为设置的值bulk-max-size
如下所示:-
标准完整 LOB 模式— 当你设置
bulk-max-size
为零,复制实例将使用标准完全 LOB 模式迁移所有 LOB。此模式需要在源表或视图中进行查找,以便迁移每个 LOB,无论大小如何都是如此。此方法通常会比对于有限 LOB 模式迁移慢得多。仅当所有或大多数 LOB 都较大(1 GB 或更大)时才使用此模式。 -
组合完整 LOB 模式— 当你设置
bulk-max-size
此完全 LOB 模式使用有限 LOB 模式和标准完全 LOB 模式的组合。这适用于完全加载任务,如果 LOB 大小在您的bulk-max-size
值范围内,则实例会在有限 LOB 模式下内联迁移 LOB。如果 LOB 大小大于此值,则实例使用源表或视图查找迁移 LOB,就像在标准完全 LOB 模式下一样。对于更改数据捕获 (CDC) 加载任务,实例使用源表查找迁移所有 LOB,就像在标准完全 LOB 模式下一样(请参阅下文)。无论 LOB 大小如何,它都会这样做。注意 您只能为完全加载任务迁移视图。
此模式导致迁移速度处于更快的有限 LOB 模式和更慢的标准完全 LOB 模式之间。只有当混合使用较小和较大 LOB 并且大多数 LOB 较小时才使用此模式。
此组合完全 LOB 模式仅适用于以下终端节点:
-
IBM Db2 作为源
-
SAP ASE 作为源或目标
-
无论您为
unlimited
模式指定的机制如何,实例都会完全迁移所有 LOB,而不会截断。 -
-
none
— 复制实例使用任务 LOB 设置迁移所选表或视图中的 LOB。使用此选项来帮助比较对于所选表或视图,在具有和不具有 LOB 设置时的迁移结果。
如果指定的表或视图包含复制中包含的 LOB,则只能在使用
limited
LOB 模式时将BatchApplyEnabled
任务设置指定为true
。在某些情况下,您可以将
true
设置为BatchApplyEnabled
,将BatchApplyPreserveTransaction
设置为false
。在这些情况下,如果表或视图具有 LOB 且源和目标终端节点是 Oracle,实例会将BatchApplyPreserveTransaction
设置为true
。 -
-
bulk-max-size
— 将此值设置为零或非零值(以 KB 为单位),具体取决于mode
如前面的物品所描述的那样。在limited
模式中,您必须为此参数设置非零值。实例将 LOB 转换为二进制格式。因此,要指定需要复制的最大 LOB,请将其大小乘以 3。例如,如果您的最大 LOB 为 2 MB,请将
bulk-max-size
设置为 6,000 (6 MB)。
表设置示例
下面,您可以找到一些演示如何使用表设置的示例。
例 加载按分区分段的表
以下示例通过基于其所有分区并行加载源中的 SALES
表来更有效地加载它。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-auto" } } ] }
例 加载按子分区分段的表
以下示例通过基于其所有子分区并行加载 Oracle 源中的 SALES
表来更有效地加载它。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "subpartitions-auto" } } ] }
例 加载按分区列表分段的表
以下示例通过按特定分区列表并行加载源中的 SALES
表来加载它。在此,指定的分区以用字母的部分开头的值命名,例如 ABCD
、EFGH
等等。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ] } } ] }
例 加载按选定的分区和子分区列表分段的 Oracle 表
以下示例通过按选定分区和子分区列表并行加载 Oracle 源中的 SALES
表来加载它。在此,指定的分区以用字母的部分开头的值命名,例如 ABCD
、EFGH
等等。指定的子分区用以数字开头的值命名,例如 01234
和 56789
。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ], "subpartitions": [ "01234", "56789" ] } } ] }
例 加载按列值范围分段的表
以下示例通过按 SALES_NO
和 REGION
值的范围指定的段并行加载源中的 SALES
表来加载它。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] } } ] }
在此,为具有名称 SALES_NO
和 REGION
的段范围指定了两列。使用两组列值(["1000","NORTH"]
和 ["3000","WEST"]
)指定两个边界。
因此,这两个边界标识要并行加载的以下三个表段:
- 段 1
-
SALES_NO
小于或等于 1000 且REGION
小于“NORTH”的行。换句话说, EAST 区域最高为 1,000 的销售数量。 - 段 2
-
段 1 以外
SALES_NO
小于或等于 3000 且REGION
小于“WEST”的行。换句话说,NORTH 和 SOUTH 区域超过 1,000 且不超过 3,000 的销售数量。 - 段 3
-
段 1 和段 2 以外的所有剩余行。换句话说,WEST 区域超过 3000 的销售数量。
例 加载两个表:一个按范围分段,另一个按分区分段
以下示例按您标识的段边界并行加载 SALES
表。它还通过所有分区并行加载 ORDERS
表,如前面的示例所示。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] } }, { "rule-type": "table-settings", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "HR", "table-name": "ORDERS" }, "parallel-load": { "type": "partitions-auto" } } ] }
例 使用有限 LOB 模式加载具有 LOB 的表
以下示例使用受限 LOB 模式(默认)加载源中包括 LOB 的 ITEMS
表,最大不截断大小为 100 MB。任何大于此大小的 LOB 都将截断为 100 MB。所有 LOB 都与所有其他列数据类型一起内联加载。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "bulk-max-size": "100000" } } ] }
例 使用标准完全 LOB 模式加载具有 LOB 的表
以下示例使用标准完全 LOB 模式加载源中的 ITEMS
表,包括所有 LOB 而不截断。所有 LOB,无论大小,都通过在源表中对每个 LOB 使用查找与其他数据类型分开加载。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited", "bulk-max-size": "0" } } ] }
例 使用组合完全 LOB 模式加载具有 LOB 的表
以下示例使用组合完全 LOB 模式加载源中的 ITEMS
表,包括所有 LOB 而不截断。所有大小为 100 MB 的 LOB 都与其他数据类型一起内联加载,就像在有限 LOB 模式下一样。所有大小超过 100 MB 的 LOB 从其他数据类型单独加载。此单独加载为源表中的每个此类 LOB 使用一个查找,类似于标准的完整 LOB 模式中。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited", "bulk-max-size": "100000" } } ] }
例 使用任务 LOB 设置加载具有 LOB 的表
以下示例使用其任务 LOB 设置加载源中的 ITEMS
表,包括所有 LOB。100 MB 的 bulk-max-size
设置会被忽略,仅用于快速重置为 limited
或 unlimited
模式。
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "none", "bulk-max-size": "100000" } } ] }