View a markdown version of this page

DMS 架构转换中的转换规则 - Amazon Database Migration Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

DMS 架构转换中的转换规则

转换规则允许您自定义 DMS 架构转换如何转换数据库对象,覆盖默认命名和数据类型映射。您可以将这些规则应用于数据库、架构、表、视图、列、函数返回值、例程参数和局部变量。

例如,假定您的源架构中有一组名为 test_TABLE_NAME 的表。您可以设置一条规则,将前缀 test_ 在目标架构中更改为前缀 demo_

您可以创建执行以下任务的转换规则:

  • 添加、删除或替换前缀

  • 添加、删除或替换后缀

  • 更改列、函数返回值、例程参数或局部变量的数据类型

  • 将对象名称转换为小写或大写

  • 重命名对象

创建转换规则

DMS 架构转换将转换规则存储为迁移项目的一部分。要定义转换规则,请在创建或修改迁移项目时将其作为 JSON 字符串传递,该字符串包含带有rules数组的对象。数组中的每个元素代表一个单独的规则对象。一个迁移项目最多支持 512 条转换规则(最大 128 KB)。

带有转换规则的数组结构如下:

{ "rules": [ { Rule object 1 }, { Rule object 2 }, ... { Rule object N } ] }

您可以在项目中添加多个转换规则。在转换过程中,DMS 架构转换应用转换规则的顺序与规则的添加顺序相同。

如果多个规则针对同一个对象,则行为取决于操作类型。具有不同操作类型的规则都会生效。例如,一条add-prefix规则和一条add-suffix规则都适用。具有相同操作类型的规则会相互覆盖,只有最后一个规则生效。

要创建转换规则,请使用以下方法之一。

Amazon Management Console
使用控制台创建转换规则
  1. 创建迁移项目页面上,选择添加转换规则。有关更多信息,请参阅 创建迁移项目

  2. 对于规则目标,选择此规则适用的数据库对象的类型。控制台向导支持schematable、和column目标。要使用其他目标,例如databaseview,请使用控制台中的 JSON 编辑器或 Amazon CLI。

  3. 对于源架构,选择输入架构。然后,指定此规则适用的源架构、表和列。您可以使用确切的名称来选择一个对象,也可以使用带有百分号 (%) 的模式作为通配符来匹配任意数量的字符。

  4. 对于操作,选择要执行的任务。

  5. 根据规则操作,输入其他值:

    • add-prefixadd-suffix-输入要添加的文本。

    • remove-prefixremove-suffix-输入要删除的文本。

    • replace-prefixreplace-suffix-输入现有文本和替换文本。

    • rename— 输入对象的新名称。

    • convert-uppercaseconvert-lowercase — 无需其他值。

    • change-data-type— 输入目标数据类型名称以及精度、小数位数或长度(可选)。

  6. 选择添加转换规则以添加其他转换规则。

    添加完规则后,选择创建迁移项目

Amazon CLI

要使用 Amazon CLI 添加转换规则,请将--transformation-rules参数与以下命令之一一起使用:

以下示例向现有迁移项目添加转换规则:

aws dms modify-migration-project \ --migration-project-identifier migration_project_arn \ --transformation-rules 'json_rules'

例如,要在特定的 AWS 区域运行此命令,请添加--region参数--region us-west-2

要编辑、复制或移除现有的转换规则,请参阅编辑转换规则

检索转换规则

您可以使用 Amazon 管理控制台或 Amazon CLI 从现有 DMS 架构转换迁移项目中检索转换规则。

Amazon Management Console

要使用 Amazon 管理控制台查看转换规则,请在现有迁移项目上选择 “修改”,然后查看 “转换规则” 部分中的现有规则列表。

Amazon CLI

要从现有 DMS 架构转换迁移项目中检索转换规则,请使用 desc ribe-migration-projects 命令。响应使用 JSON 格式并包含与项目关联的转换规则。

以下 Amazon CLI 示例从迁移项目中检索转换规则:

aws dms describe-migration-projects \ --filters Name=migration-project-identifier,Values=migration_project_arn

编辑转换规则

要在迁移项目中编辑、添加或移除转换规则,请使用以下方法之一。

Amazon Management Console
编辑转换规则
  1. 选择迁移项目,然后选择您的迁移项目。

  2. 选择 “修改” 以编辑您的迁移项目设置。

  3. 对于转换规则,请选择下列操作之一:

    • 选择添加转换规则以添加新的转换规则。

    • 选择 “复制” 以复制现有的转换规则并将其添加到列表末尾。

    • 选择删除,以删除现有的转换规则。

    • 选择现有的转换规则进行编辑。

  4. 完成编辑后,选择保存更改

Amazon CLI

要使用 Amazon CLI 更新转换规则,请使用带参数的 m odify-migration-projec t 命令。--transformation-rules将完整更新的规则集作为 JSON 字符串传递。

aws dms modify-migration-project \ --migration-project-identifier migration_project_arn \ --transformation-rules 'json_rules'

转换规则格式

转换规则使用 JSON 对象字段来定义如何将源对象转换为其等效目标对象。每种规则类型都使用一组特定的字段。仅包含适用于您的任务的字段。

以下 JSON 对象描述了 DMS 架构转换转换规则:

{ "rule-type": "transformation", "rule-id": rule_id, "rule-name": "rule_name", "rule-action": "rule_action", "rule-target": "rule_target", "object-locator": { [ "database-name": "database_name", ] [ "schema-name": "schema_name", ] [ "table-name": "table_name", ] [ "column-name": "column_name", ] [ "parent": "parent_name", ] [ "function-name": "function_name", ] [ "procedure-name": "procedure_name", ] [ "parameter-name": "parameter_name", ] [ "local-variable-name": "local_variable_name", ] [ "type": "source_data_type", ] [ "precision": source_precision, ] [ "scale": source_scale, ] [ "length": source_length ] }, [ "value": "rule_value", ] [ "old-value": "rule_old_value", ] [ "data-type": { "type": "data_type_name", [ "precision": data_type_precision, ] [ "scale": data_type_scale, ] [ "length": data_type_length ] } ] }

下表描述了每个参数。

参数 可能的值 说明
rule-type transformation

将规则应用于对象定位器指定的每个对象的值。

对于所有转换规则,请将其设置为transformation

必需的参数。

rule-id 一个数字(整数)值。

一个用于标识规则的唯一数字值。

必需的参数。

rule-name 一个字母数字值。

一个用于标识规则的唯一名称。

必需的参数。

rule-action add-prefix, remove-prefix, replace-prefix, add-suffix, remove-suffix, replace-suffix, convert-uppercase, convert-lowercase, rename, change-data-type

要应用于对象的转换。所有转换规则操作都区分大小写。

前缀操作:

  • add-prefix— 在名称的开头添加指定的文本。

  • remove-prefix— 删除名称开头的指定文本。

  • replace-prefix— 将现有前缀替换为新前缀。

后缀操作:

  • add-suffix— 在名称末尾添加指定文本。

  • remove-suffix— 删除名称末尾的指定文本。

  • replace-suffix— 将现有后缀替换为新的后缀。

大小写转换:

  • convert-uppercase— 将名称中的所有字符转换为大写。

  • convert-lowercase— 将名称中的所有字符转换为小写。

直接修改:

  • rename— 将名称更改为全新的指定值。

  • change-data-type— 将列或局部变量的数据类型修改为不同的数据类型。

范围:可以对架构、表和列应用前缀、后缀、重命名和大小写转换操作。

change-data-type操作仅适用于列、函数返回值、例程参数和局部变量。

必需的参数。

rule-target database, schema, table, view, column, function result, routine parameter, local variable

要应用规则的对象的类型。

  • database— 数据库。

  • schema— 数据库架构。

  • table— 数据库表。

  • view— 数据库视图。

  • column— 数据库表或视图列。

  • function result— 函数返回值。

  • routine parameter— 存储过程或函数参数。

  • local variable— 存储过程或函数中的局部变量。

必需的参数。

object-locator 一个 JSON 对象。

用于标识规则适用于哪些源数据库对象的对象。您可以将百分号 (%) 用作每个object-locator对象字段中全部或部分值的通配符。

该对象包含以下字符串字段:

  • database-name

  • schema-name

  • table-name

  • column-name

  • parent

  • function-name

  • procedure-name

  • parameter-name

  • local-variable-name

  • type

  • precision

  • scale

  • length

转换规则中的所有对象名称(例如表名或列名)都区分大小写。

以下各节描述了每个对象字段。

必需的参数。

object-locator | database-name 遵循源数据库命名规则的字母数字值。

源数据库的名称。

适用于数据库供应商,其数据库架构源自作为对象顶级容器的数据库。例如:微软 SQL Server、SAP ASE。

可选的 JSON 对象字段。

object-locator | schema-name 遵循源数据库命名规则的字母数字值。

源数据库架构的名称。

可选的 JSON 对象字段。

object-locator | table-name 遵循源数据库命名规则的字母数字值。

源数据库表的名称。

可选的 JSON 对象字段。

object-locator | column-name 遵循源数据库命名规则的字母数字值。

源数据库表列的名称。

可选的 JSON 对象字段。

object-locator | parent 遵循源数据库命名规则的字母数字值。

源数据库对象的名称,该对象是指定对象的父对象,例如,表示function-nameprocedure-name

在某些供应商的数据库中,应用规则的对象可能是从属对象,需要指定其父对象。

例如,Oracle 中的封装函数,其中父函数是软件包名称。

可选的 JSON 对象字段。

object-locator | function-name 遵循源数据库命名规则的字母数字值。

源数据库函数的名称。

可选的 JSON 对象字段。

object-locator | procedure-name 遵循源数据库命名规则的字母数字值。

源数据库过程的名称。

可选的 JSON 对象字段。

object-locator | parameter-name 遵循源数据库命名规则的字母数字值。

源数据库函数或过程参数的名称。

可选的 JSON 对象字段。

object-locator | local-variable-name 遵循源数据库命名规则的字母数字值。

源数据库函数或过程中的局部变量的名称。

可选的 JSON 对象字段。

object-locator | type 一个字母数字值。

要匹配的源数据类型名称。使用此字段仅将规则应用于具有特定数据类型的对象。

可选的 JSON 对象字段。

object-locator | precision 一个数字(整数)值。

要匹配的源数据类型的精度。

可选的 JSON 对象字段。

object-locator | scale 一个数字(整数)值。

要匹配的源数据类型的比例。

可选的 JSON 对象字段。

object-locator | length 一个数字(整数)值。

要匹配的源数据类型的长度。

可选的 JSON 对象字段。

value 遵循目标数据库命名规则的字母数字值。

变换操作使用的文本值。对于add-prefixadd-suffix,指定要添加的文本。对于remove-prefixremove-suffix,指定要删除的文本。对于replace-prefixreplace-suffix,指定替换文本。对于rename,指定新名称。

convert-uppercaseconvert-lowercase和之外的所有操作均为必填项change-data-type

old-value 遵循源数据库命名规则的字母数字值。

要在对象名称中查找和替换的现有值。对于诸如replace-prefix和之类的操作是必需replace-suffix的。

可选参数。

data-type 一个 JSON 对象。

描述替换数据类型属性的对象(何时rule-action是)change-data-type

对象包含以下字段:

  • type: 字符串

  • precision: 数字

  • scale: 数字

  • length: 数字

以下各节描述了每个对象字段。

可选参数。

data-type | type 一个字母数字值。

目标数据库列的替换数据类型的名称(如果rule-action是)change-data-type。必须是有效的目标数据库数据类型。

必填的 JSON 对象字段。

data-type | precision 一个数字(整数)值。

目标数据库的替换数据类型的精度(如果rule-action是)change-data-type

可选的 JSON 对象字段。

data-type | scale 一个数字(整数)值。

目标数据库的替换数据类型的比例(如果rule-action是)change-data-type

可选的 JSON 对象字段。

data-type | length 一个数字(整数)值。

目标数据库的替换数据类型的长度(如果rule-action是)change-data-type

可选的 JSON 对象字段。

转换规则示例

以下示例显示了不同规则类型的--transformation-rules参数的 JSON 值:

以下示例在从源数据库转换为目标数据库时执行这些操作:

  • 为架构DW_添加前缀SALES

  • ORDERS在架构中FACT_为表添加前缀SALES

  • 在架构中OLD_为表UNIT_PRICEPRODUCTS中的列添加前缀SALES

{ "rules": [ { "rule-id": 5, "rule-type": "transformation", "rule-name": "add-prefix-schema-sales", "rule-action": "add-prefix", "rule-target": "schema", "object-locator": { "schema-name": "SALES" }, "value": "DW_" }, { "rule-id": 12, "rule-type": "transformation", "rule-name": "add-prefix-table-orders", "rule-action": "add-prefix", "rule-target": "table", "object-locator": { "schema-name": "SALES", "table-name": "ORDERS" }, "value": "FACT_" }, { "rule-id": 27, "rule-type": "transformation", "rule-name": "add-prefix-column-unit-price", "rule-action": "add-prefix", "rule-target": "column", "object-locator": { "schema-name": "SALES", "table-name": "PRODUCTS", "column-name": "UNIT_PRICE" }, "value": "OLD_" } ] }

以下示例在从源数据库转换为目标数据库时执行这些操作:

  • SRC_从架构中移除前缀SRC_FINANCE

  • TMP_从架构TMP_INVOICES中的表中删除前缀SRC_FINANCE

  • PAID_从架构中表PAID_AMOUNTTMP_PAYMENTS的列中删除前缀SRC_FINANCE

{ "rules": [ { "rule-id": 3, "rule-type": "transformation", "rule-name": "remove-prefix-schema-src-finance", "rule-action": "remove-prefix", "rule-target": "schema", "object-locator": { "schema-name": "SRC_FINANCE" }, "value": "SRC_" }, { "rule-id": 18, "rule-type": "transformation", "rule-name": "remove-prefix-table-tmp-invoices", "rule-action": "remove-prefix", "rule-target": "table", "object-locator": { "schema-name": "SRC_FINANCE", "table-name": "TMP_INVOICES" }, "value": "TMP_" }, { "rule-id": 41, "rule-type": "transformation", "rule-name": "remove-prefix-column-paid-amount", "rule-action": "remove-prefix", "rule-target": "column", "object-locator": { "schema-name": "SRC_FINANCE", "table-name": "TMP_PAYMENTS", "column-name": "PAID_AMOUNT" }, "value": "PAID_" } ] }

以下示例在从源数据库转换为目标数据库时执行这些操作:

  • 将前缀OLD_替换为架构NEW_中的前缀OLD_INVENTORY

  • 将架构INT_中的表中的前STG_缀替换STG_WAREHOUSES为表中的前缀OLD_INVENTORY

  • 将前缀SRC_TGT_换为架构SRC_WAREHOUSE_CODE中表STG_WAREHOUSES中的列OLD_INVENTORY

{ "rules": [ { "rule-id": 7, "rule-type": "transformation", "rule-name": "replace-prefix-schema-old-inventory", "rule-action": "replace-prefix", "rule-target": "schema", "object-locator": { "schema-name": "OLD_INVENTORY" }, "value": "NEW_", "old-value": "OLD_" }, { "rule-id": 22, "rule-type": "transformation", "rule-name": "replace-prefix-table-stg-warehouses", "rule-action": "replace-prefix", "rule-target": "table", "object-locator": { "schema-name": "OLD_INVENTORY", "table-name": "STG_WAREHOUSES" }, "value": "INT_", "old-value": "STG_" }, { "rule-id": 35, "rule-type": "transformation", "rule-name": "replace-prefix-column-src-warehouse-code", "rule-action": "replace-prefix", "rule-target": "column", "object-locator": { "schema-name": "OLD_INVENTORY", "table-name": "STG_WAREHOUSES", "column-name": "SRC_WAREHOUSE_CODE" }, "value": "TGT_", "old-value": "SRC_" } ] }

以下示例在从源数据库转换为目标数据库时执行这些操作:

  • 为架构_HISTHR_ARCHIVE添加后缀。

  • JOB_CHANGES在架构HR_ARCHIVE_HIST为表添加后缀。

  • 在架构HR_ARCHIVE_TS为表CREATED_ATEMPLOYEE_SALARIES中的列添加后缀。

{ "rules": [ { "rule-id": 9, "rule-type": "transformation", "rule-name": "add-suffix-schema-hr-archive", "rule-action": "add-suffix", "rule-target": "schema", "object-locator": { "schema-name": "HR_ARCHIVE" }, "value": "_HIST" }, { "rule-id": 16, "rule-type": "transformation", "rule-name": "add-suffix-table-job-changes", "rule-action": "add-suffix", "rule-target": "table", "object-locator": { "schema-name": "HR_ARCHIVE", "table-name": "JOB_CHANGES" }, "value": "_HIST" }, { "rule-id": 44, "rule-type": "transformation", "rule-name": "add-suffix-column-created-at", "rule-action": "add-suffix", "rule-target": "column", "object-locator": { "schema-name": "HR_ARCHIVE", "table-name": "EMPLOYEE_SALARIES", "column-name": "CREATED_AT" }, "value": "_TS" } ] }

以下示例在从源数据库转换为目标数据库时执行这些操作:

  • _FILES从架构LEGAL_FILES中删除后缀。

  • _V1从架构CLAUSES_V1LEGAL_FILES中的表中删除后缀。

  • _CODE从架构LEGAL_FILES中表的列COUNTRY_CODE中删除后缀CONTRACTS_V1

{ "rules": [ { "rule-id": 6, "rule-type": "transformation", "rule-name": "remove-suffix-schema-legal-files", "rule-action": "remove-suffix", "rule-target": "schema", "object-locator": { "schema-name": "LEGAL_FILES" }, "value": "_FILES" }, { "rule-id": 14, "rule-type": "transformation", "rule-name": "remove-suffix-table-clauses-v1", "rule-action": "remove-suffix", "rule-target": "table", "object-locator": { "schema-name": "LEGAL_FILES", "table-name": "CLAUSES_V1" }, "value": "_V1" }, { "rule-id": 31, "rule-type": "transformation", "rule-name": "remove-suffix-column-country-code", "rule-action": "remove-suffix", "rule-target": "column", "object-locator": { "schema-name": "LEGAL_FILES", "table-name": "CONTRACTS_V1", "column-name": "COUNTRY_CODE" }, "value": "_CODE" } ] }

以下示例在从源数据库转换为目标数据库时执行这些操作:

  • 将后缀替换_DEV为架构_PRODREPORTING_DEV中。

  • 将后缀_RPT替换为架构_REPORTREPORTING_DEV中的表MONTHLY_RPT中。

  • 将后缀_ID替换_KEY为架构CUSTOMER_IDREPORTING_DEV中表MONTHLY_RPT中的列。

{ "rules": [ { "rule-id": 8, "rule-type": "transformation", "rule-name": "replace-suffix-schema-reporting-dev", "rule-action": "replace-suffix", "rule-target": "schema", "object-locator": { "schema-name": "REPORTING_DEV" }, "value": "_PROD", "old-value": "_DEV" }, { "rule-id": 23, "rule-type": "transformation", "rule-name": "replace-suffix-table-monthly-rpt", "rule-action": "replace-suffix", "rule-target": "table", "object-locator": { "schema-name": "REPORTING_DEV", "table-name": "MONTHLY_RPT" }, "value": "_REPORT", "old-value": "_RPT" }, { "rule-id": 47, "rule-type": "transformation", "rule-name": "replace-suffix-column-customer-id", "rule-action": "replace-suffix", "rule-target": "column", "object-locator": { "schema-name": "REPORTING_DEV", "table-name": "MONTHLY_RPT", "column-name": "CUSTOMER_ID" }, "value": "_KEY", "old-value": "_ID" } ] }

以下示例在从源数据库转换为目标数据库时执行这些操作:

  • 将架构名称中的所有字符CRM_LEGACY转换为大写。

  • 将架构中表CUSTOMER_ACCOUNTS名称中的所有字符CRM_LEGACY转换为大写。

  • 将架构中表CUSTOMER_ACCOUNTS中列名FIRST_NAME中的所有字符CRM_LEGACY转换为大写。

{ "rules": [ { "rule-id": 4, "rule-type": "transformation", "rule-name": "convert-uppercase-schema-crm-legacy", "rule-action": "convert-uppercase", "rule-target": "schema", "object-locator": { "schema-name": "CRM_LEGACY" } }, { "rule-id": 19, "rule-type": "transformation", "rule-name": "convert-uppercase-table-customer-accounts", "rule-action": "convert-uppercase", "rule-target": "table", "object-locator": { "schema-name": "CRM_LEGACY", "table-name": "CUSTOMER_ACCOUNTS" } }, { "rule-id": 36, "rule-type": "transformation", "rule-name": "convert-uppercase-column-first-name", "rule-action": "convert-uppercase", "rule-target": "column", "object-locator": { "schema-name": "CRM_LEGACY", "table-name": "CUSTOMER_ACCOUNTS", "column-name": "FIRST_NAME" } } ] }

以下示例在从源数据库转换为目标数据库时执行这些操作:

  • 将架构名称中的所有字符LOGISTICS转换为小写。

  • 将架构中表SHIPMENT_ORDERS名称中的所有字符LOGISTICS转换为小写。

  • 将架构中表SHIPMENT_ORDERS中列名DESTINATION_CITY中的所有字符LOGISTICS转换为小写。

{ "rules": [ { "rule-id": 11, "rule-type": "transformation", "rule-name": "convert-lowercase-schema-logistics", "rule-action": "convert-lowercase", "rule-target": "schema", "object-locator": { "schema-name": "LOGISTICS" } }, { "rule-id": 25, "rule-type": "transformation", "rule-name": "convert-lowercase-table-shipment-orders", "rule-action": "convert-lowercase", "rule-target": "table", "object-locator": { "schema-name": "LOGISTICS", "table-name": "SHIPMENT_ORDERS" } }, { "rule-id": 52, "rule-type": "transformation", "rule-name": "convert-lowercase-column-destination-city", "rule-action": "convert-lowercase", "rule-target": "column", "object-locator": { "schema-name": "LOGISTICS", "table-name": "SHIPMENT_ORDERS", "column-name": "DESTINATION_CITY" } } ] }

以下示例在从源数据库转换为目标数据库时执行这些操作:

  • 将架构重命名TEST_SCHEMATEST_NEW_SCHEMA

  • 将架构REGIONS中的表重命名HRORG_REGIONS

  • 将架构CITY中表LOCATIONS中的列重命名HRORG_CITY_NAME

{ "rules": [ { "rule-id": 2, "rule-type": "transformation", "rule-name": "rename-schema-test-schema", "rule-action": "rename", "rule-target": "schema", "object-locator": { "schema-name": "TEST_SCHEMA" }, "value": "TEST_NEW_SCHEMA" }, { "rule-id": 15, "rule-type": "transformation", "rule-name": "rename-table-hr-regions", "rule-action": "rename", "rule-target": "table", "object-locator": { "schema-name": "HR", "table-name": "REGIONS" }, "value": "ORG_REGIONS" }, { "rule-id": 38, "rule-type": "transformation", "rule-name": "rename-column-hr-locations-city", "rule-action": "rename", "rule-target": "column", "object-locator": { "schema-name": "HR", "table-name": "LOCATIONS", "column-name": "CITY" }, "value": "ORG_CITY_NAME" } ] }

以下示例在从源数据库转换为目标数据库时执行这些操作:

  • 将架构SALARY中表EMPLOYEES中列的数据类型PAYROLL从更改为,精DECIMALNUMBER为 18,小数位数为 4。

  • 将架构NOTES中表EMPLOYEES中列的数据类型PAYROLL从更改为,长VARCHARVARCHAR2为 350。

  • 将架构HIRE_DATE中表EMPLOYEES中列的数据类型PAYROLL从更改DATE为,精TIMESTAMP WITH TIME ZONE度为 3。

{ "rules": [ { "rule-id": 10, "rule-type": "transformation", "rule-name": "change-datatype-column-salary", "rule-action": "change-data-type", "rule-target": "column", "object-locator": { "schema-name": "PAYROLL", "table-name": "EMPLOYEES", "column-name": "SALARY" }, "data-type": { "type": "DECIMAL", "precision": 18, "scale": 4 } }, { "rule-id": 29, "rule-type": "transformation", "rule-name": "change-datatype-column-notes", "rule-action": "change-data-type", "rule-target": "column", "object-locator": { "schema-name": "PAYROLL", "table-name": "EMPLOYEES", "column-name": "NOTES" }, "data-type": { "type": "VARCHAR", "length": 350 } }, { "rule-id": 56, "rule-type": "transformation", "rule-name": "change-datatype-column-hire-date", "rule-action": "change-data-type", "rule-target": "column", "object-locator": { "schema-name": "PAYROLL", "table-name": "EMPLOYEES", "column-name": "HIRE_DATE" }, "data-type": { "type": "TIMESTAMP WITH TIME ZONE", "precision": 3 } } ] }

以下示例在从源数据库转换为目标数据库时执行这些操作:

  • 将架构P_AMOUNT中存储过程PROCESS_PAYMENT中的参数的数据类型更改FINANCENUMERIC

  • 将架构V_TAX_RATE中存储过程PROCESS_PAYMENT中的局部变量的数据类型更改FINANCENUMERIC精度 10 和小数位数 6。

  • 将架构V_DESCRIPTION中独立函数CALC_DISCOUNT中局部变量的数据类型更改FINANCE为长CHARACTER度为 150。

{ "rules": [ { "rule-id": 7, "rule-type": "transformation", "rule-name": "change-datatype-param-p-amount", "rule-action": "change-data-type", "rule-target": "routine parameter", "object-locator": { "schema-name": "FINANCE", "procedure-name": "PROCESS_PAYMENT", "parameter-name": "P_AMOUNT" }, "data-type": { "type": "NUMERIC" } }, { "rule-id": 21, "rule-type": "transformation", "rule-name": "change-datatype-localvar-v-tax-rate", "rule-action": "change-data-type", "rule-target": "local variable", "object-locator": { "schema-name": "FINANCE", "procedure-name": "PROCESS_PAYMENT", "local-variable-name": "V_TAX_RATE" }, "data-type": { "type": "NUMERIC", "precision": 10, "scale": 6 } }, { "rule-id": 43, "rule-type": "transformation", "rule-name": "change-datatype-localvar-v-description", "rule-action": "change-data-type", "rule-target": "local variable", "object-locator": { "schema-name": "FINANCE", "function-name": "CALC_DISCOUNT", "local-variable-name": "V_DESCRIPTION" }, "data-type": { "type": "CHARACTER", "length": 150 } } ] }

以下示例在从源数据库转换为目标数据库时执行这些操作:

  • 将架构GET_PRODUCT_PRICE中独立函数的返回数据类型更改FNG_COMPANYBIGINT

  • 将架构CALC_DISCOUNTED_PRICE中独立函数的返回数据类型更改FNG_COMPANYDECIMAL

  • 将架构中包CALCULATE_TAX内打包函数的返回数据类型更改FNG_COMPANYREALTAX_UTILS

{ "rules": [ { "rule-id": 13, "rule-type": "transformation", "rule-name": "change-result-type-get-product-price", "rule-action": "change-data-type", "rule-target": "function result", "object-locator": { "schema-name": "FNG_COMPANY", "function-name": "GET_PRODUCT_PRICE" }, "data-type": { "type": "BIGINT" } }, { "rule-id": 28, "rule-type": "transformation", "rule-name": "change-result-calc-discounted-price", "rule-action": "change-data-type", "rule-target": "function result", "object-locator": { "schema-name": "FNG_COMPANY", "function-name": "CALC_DISCOUNTED_PRICE" }, "data-type": { "type": "DECIMAL" } }, { "rule-id": 61, "rule-type": "transformation", "rule-name": "change-result-type-calculate-tax", "rule-action": "change-data-type", "rule-target": "function result", "object-locator": { "schema-name": "FNG_COMPANY", "parent": "TAX_UTILS", "function-name": "CALCULATE_TAX" }, "data-type": { "type": "REAL" } } ] }

以下示例在从源数据库转换为目标数据库时执行这些操作:

  • 为名称MIGR_以开头的所有架构添加前缀。STG_

  • 为名称MIGR_以开头的所有架构中的所有表添加前缀。STG_

  • 在名称_NEW以开头的所有架构的所有表SRC_中,为名称以开头的所有列添加后缀。STG_

{ "rules": [ { "rule-id": 8, "rule-type": "transformation", "rule-name": "add-prefix-schemas-starting-with-stg", "rule-action": "add-prefix", "rule-target": "schema", "object-locator": { "schema-name": "STG_%" }, "value": "MIGR_" }, { "rule-id": 33, "rule-type": "transformation", "rule-name": "add-prefix-all-tables-in-stg-schemas", "rule-action": "add-prefix", "rule-target": "table", "object-locator": { "schema-name": "STG_%", "table-name": "%" }, "value": "MIGR_" }, { "rule-id": 57, "rule-type": "transformation", "rule-name": "add-suffix-columns-starting-with-src", "rule-action": "add-suffix", "rule-target": "column", "object-locator": { "schema-name": "STG_%", "table-name": "%", "column-name": "SRC_%" }, "value": "_NEW" } ] }