O rac le 到PG存储过程自动转换实践
- - 全量语法解析技术
Oracle转PG的痛中之痛 -- 过程语言的转换
简单语法差异
Oracle PG
delete delete [from] tab delete from tab
daul select 1*4 from dual; select 1*4
Select select name from (select * from select name from (select * from person)
person) tab
update update person p set p.name='张三' update person set name='张三'
ora2pg转换部分语句
使用正则表达式查询,然后替换
可以搞定简单的语法,对于复杂的转换有很高的错误率
复杂语法差异
Oracle语法 PG替代方案
start ... connect by with替代
merge with结合insert
insert all 多个insert
+ 连接 join替代
ora2pg对于复杂转换有很高的错误率
ora2pg对于复杂循环嵌套力不从心
SQL是一种反复嵌套的语言
with as
table name
union
select item
select
Data set Join Data set
select select where
select Data set
group
union
select connect 全量语法解析可以全面的分析对象树
order
工银银行之转化实践1
迁移项目 成功率 检验标准
Oracle数据表\视图\索引\约束\序列 100% 数目一致
Oracle存储过程自动移植率 96.9% 成功编译,无异常
Oracle功能移植率 75.6% 自动化测试用例+人工测试
软件发布管理系统 (SMPS) 花费移植时间1人1天 (含搭建环境)
存储过程共计16万行
工银银行之转化实践2
元数据及软件资源信息管理系统 (SEAS )
存储过程共计170