将 Oracle 的 VARCHAR2 (1) 种数据类型转换为亚马逊 Aurora Postgre 的布尔数据类型 SQL - AWS Prescriptive Guidance

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

将 Oracle 的 VARCHAR2 (1) 种数据类型转换为亚马逊 Aurora Postgre 的布尔数据类型 SQL

由 Naresh Damera 创作 () AWS

摘要

在从适用于 Oracle 的亚马逊关系数据库服务(亚马逊RDS)迁移到亚马逊 Aurora Postgre SQL 兼容版期间,在亚马逊网络服务 () 数据库迁移AWS服务 () 中验证迁移时,您可能会遇到数据不匹配的问题。AWS DMS为防止这种不匹配,可以将 VARCHAR2 (1) 数据类型转换为布尔数据类型。

VARCHAR2数据类型存储长度可变的文本字符串,VARCHAR2(1) 表示该字符串的长度为 1 个字符或 1 个字节。有关更多信息VARCHAR2,请参阅 Oracle 内置数据类型(Oracle 文档)。

在此模式中,在样本源数据表列中,VARCHAR2(1) 数据要么是 Y(表示 “是”),要么 N(表示 “”)。 此模式包括使用AWSDMS和 AWS Schema Conversion Tool (AWSSCT) 将此数据类型从 VARCHAR2 (1) 中的 YN 值转换为布尔值中的值或值的说明。

目标受众

建议那些有使用将 Oracle 数据库迁移到 Aurora Postgre SQL-Compatible 的经验的人使用这种模式。AWS DMS完成迁移后,请遵守将 Oracle 转换为 Amazon for Postgre SQL 或 Amazon A RDS urora Postgre SQL(AWSSCT文档)中的建议。

先决条件和限制

先决条件

产品版本

架构

源技术堆栈

RDS适用于 Oracle 的亚马逊数据库实例

目标技术堆栈

Amazon Aurora Postgre SQL-兼容数据库实例

源架构和目标架构

将数据类型从 VARCHAR2 (1) 更改为布尔值

工具

AWS 服务

其他服务

  • Oracle Developer 是一个集成的SQL开发环境,可简化传统部署和基于云的部署中 Oracle 数据库的开发和管理。在这种模式中,您可以使用此工具连接到 Amazon fo RDS r Oracle 数据库实例并查询数据。

  • pgAdmin是 Postgre SQL 的开源管理工具。它提供了一个图形界面,可帮助您创建、维护和使用数据库对象。在这种示例中,您可使用此工具连接到 Aurora 数据库实例并查询数据。

操作说明

任务描述所需技能

创建数据库迁移报告。

  1. 在中 AWSSCT,创建数据库迁移评估报告。有关更多信息,请参阅创建迁移评测报告

  2. 查看和执行迁移评测报告中的操作项目。有关更多信息,请参阅评测报告操作项目

DBA,开发者

在目标数据库上禁用外键约束。

在 Postgre 中SQL,外键是通过使用触发器实现的。在满载阶段,每次AWSDMS加载一个表。强烈建议您在完全加载期间使用以下方法之一禁用外键约束:

  • 从实例中临时禁用所有触发器并完成完全加载。

  • 使用 Postgr session_replication_role SQL e 中的参数。

如果禁用外键约束不可行,请为父表和子表特定的主数据创建AWSDMS迁移任务。

DBA,开发者

禁用目标数据库的主键与唯一键。

使用以下命令禁用目标数据库的主键和约束。这有助于提高初始加载任务表现。

ALTER TABLE <table> DISABLE PRIMARY KEY;
ALTER TABLE <table> DISABLE CONSTRAINT <constraint_name>;
DBA,开发者

创建初始加载任务。

在中 AWSDMS,为初始加载创建迁移任务。有关说明,请参阅创建任务。对于迁移方法,请选择迁移现有数据。此迁移方法在Full Load被调用API。暂时不要启动此任务。

DBA,开发者

编辑初始加载任务设置。

编辑任务设置,以添加数据验证。这些验证设置必须在JSON文件中创建。有关说明和示例,请参见指定任务设置。添加以下验证:

  • 要验证目标数据库中的 VARCHAR2 (1) 数据是否准确地转换为布尔值,请在此模式的 “其他信息” 部分的 “数据验证脚本” 中添加代码。验证脚本将目标表中的布尔值 1 转换为 Y,将 0 转换为 N,然后将目标表值与源表中的值进行比较。

若要验证数据迁移的其余部分,请在任务中启用数据验证。有关更多信息,请参阅数据验证任务设置

AWS管理员,DBA

创建持续复制任务。

在中 AWSDMS,创建迁移任务,使目标数据库与源数据库保持同步。有关说明,请参阅创建任务。对于迁移方法,请选择仅复制数据更改。暂时不要启动此任务。

DBA
任务描述所需技能

创建用于测试的样本数据。

在源数据库中,创建包含用于测试目的的数据的示例表。

开发人员

确认没有冲突活动。

使用 pg_stat_activity 检查服务器上是否存在任何可能影响迁移的活动。有关更多信息,请参阅统计数据收集器(Postgre SQL 文档)。

AWS 管理员

启动AWSDMS迁移任务。

在AWSDMS控制台的 “控制” 页面上,启动您在上一篇长篇故事中创建的初始加载和正在进行的复制任务。

AWS 管理员

监控任务和表加载状态。

在迁移过程中,监控任务状态表状态。初始加载任务完成后,在表统计选项卡上:

  • 加载状态应为表已完成

  • 验证状态应为已验证

AWS 管理员

验证迁移结果。

使用pgAdmin查询目标数据库上的表。 查询成功表示数据已成功迁移。

开发人员

在目标数据库添加主键和外键。

在目标数据库创建主键和外键。欲了解更多信息,请参阅 ALTERTABLE(Postgre SQL 网站)。

DBA

清理测试数据。

在源数据库和目标数据库,清理为单元测试创建的数据。

开发人员
任务描述所需技能

完成迁移。

重复前面的操作说明,使用真实的源数据测试迁移任务。将数据从源数据库迁移至目标数据库。

开发人员

验证源数据库和目标数据库是否同步。

验证源数据库和目标数据库是否同步。有关更多信息和说明,请参阅AWSDMS数据验证

开发人员

停止源数据库。

停止 Amazon f RDS or Oracle 数据库。有关说明,请参阅暂时停止 Amazon RDS 数据库实例。停止源数据库后,中的AWSDMS初始加载和正在进行的复制任务将自动停止。无需执行其他操作即可停止上述任务。

开发人员

相关资源

AWS参考文献

其他参考资料

教程和视频

其他信息

数据验证脚本

以下数据验证脚本将 1 转换为 Y,将 0 转换为 N。 这有助于AWSDMS任务成功完成并通过表验证。

{ "rule-type": "validation", "rule-id": "5", "rule-name": "5", "rule-target": "column", "object-locator": { "schema-name": "ADMIN", "table-name": "TEMP_CHRA_BOOL", "column-name": "GRADE" }, "rule-action": "override-validation-function", "target-function": "case grade when '1' then 'Y' else 'N' end"         }

脚本中的 case 语句执行验证。如果验证失败,则在目标数据库实例上的 public.awsdms_validation_failures_v1 表中AWSDMS插入一条记录。此记录包含表名、错误时间,以及源表和目标表中不匹配值的详细信息。

如果您没有将此数据验证脚本添加到AWSDMS任务中,并且数据已插入目标表中,则该AWSDMS任务会将验证状态显示为 “不匹配的记录”。

在AWSSCT转换过程中,AWSDMS迁移任务将 VARCHAR2 (1) 数据类型的数据类型更改为布尔值,并在"NO"列上添加主键约束。