Oracle、DB2传统关系型数据库的 SQL语法 与 MySQL、PG 有很多不兼容的地方。
例如:实现字符拼接的 SQL
Oracle、DB2:
select name || ' is work at ' || dept from employee where empid=10;
而 MySQL:
select concat ( name, ' is work at ', dept ) from employee where empid=10;
有什么工具可以完成 SQL的自动转换吗?
要完全兼容Oracle的语法是一件非常困难的事,目前业内兼容Oracle做的比较好的应该是EDB了,阿里云号称兼容Oracle的PPAS实际上就是EDB,DB2的Oracle兼容也是EDB提供的技术,但是从我们实际的测试来看,也还是有很多不尽如人意的地方。所以想完全实现自动转换,基本上没这个可能。不过部分的兼容是可能的,如果是PostgreSQL体系,可以使用诸如orafce这样的插件,还有ora2pg这样的工具,可以实现类型的自动映射,以及存储过程代码部分自动转换,而且ora2pg是perl编写的,很容易实现定制化。
收起各个厂商都有自己的特点,要是统一兼容,那oracle肯定不愿意的,小长家那是会乐死。踩着巨人肩膀上看。
打铁还需要自身硬,什么时候抢占更多的oracle占有率,才能带来国产更好的发展,维护也会更偏向于中国化。
收起