语法转换说明
日期时间函数转换说明
在使用UGO进行语法转换时,如果所选目标库为GaussDB 3.2或3.2以下的版本,GaussDB部分时间函数与事务相关详情可参见表1。这些函数返回的都是事务的开始时间,而在源库中获取的为系统当前时间,在长事务的场景下,源库和目标库GaussDB得到的时间不一致。因此在UGO转换后,如果转换后的语句中存在上述函数,则用户需要自行分析上述函数是否存在长事务中并确认影响,如有影响需手工修改保证最终的准确性。
Oracle -> GaussDB
GaussDB只支持普通的SYNONYM同义词,不支持PUBLIC同义词。UGO会将Oracle中的PUBLIC同义词转换为GaussDB中public schema下的普通同义词对象,从而实现与Oracle中等效的功能,可参见表2。
当您的数据库中不同用户拥有同名的public同义词时,该方案会将两个用户的同义词对象均转换到public schema下,造成同义词对象冲突,所以需要对不同用户中同名的同义词完成本地改造后再进行迁移,可参考下表表3。
PostgreSQL迁移到GaussDB
模式兼容性:
- PostgreSQL 支持迁移到 GaussDB(O模式);
- GaussDB(O模式)中将空字符串存储为 NULL,执行SQL语句“ select '' is null;”结果为True,与 Oracle 数据库行为一致;
影响范围:
- 如果源库是 PostgreSQL,目标库是 GaussDB(O模式),则需要适配改造涉及空字符串或 NULL 语法的 SQL。
- 影响范围包括 DML、DDL、系统函数,例如 SQL语句“ select '' is null;”,“select regexp_matches('test1', 'test1', '');”。
- UGO 评估功能支持评估PostgreSQL到GaussDB 链路中 “IS NULL ”空字符串语法。
Microsoft SQL Server 到 MySQL
Microsoft SQL Server的DATETIME数据类型支持和数字加减运算,但是UGO无法准确识别此场景,建议使用MySQL中的DATE_ADD函数进行相应改造。