本文主要是介绍oracle迁移至gbase,sql问题总结(完善中),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近再做国产化适配,需要把oracle里面的数据迁移至gbase 8a库中,这边把迁移过程中遇到的sql问题,记录下,现在仅迁移了一部分,后续会继续完善
1.ORACLE里面的NVL2函数在8a中不支持,可换成DECODE函数
2.表别名必须加,上面是ORACLE写法,下面是8a写法
--ORACLE
select * from (select T.CITY, T.COMPANYNAME from TEST T)
--GBASE 8a
select * from (select T.CITY, T.COMPANYNAME from TEST T) A
3.sql中注释去掉(8a的注释方式和oracle不同)
--ORACLE
select * from (--查询公司名称select /*T.CITY,*/ T.COMPANYNAME from TEST T)
--GBASE 8a
select * from (select T.COMPANYNAME from TEST T)
4.新建用户不能使用dual表时,需要去授权(我的用户是TEST_RY)
gccli gclusterdb
grant select on gclusterdb.dual to TEST_RY;
5.表名不支持含有#,8a中的#代表单行注释,所以表名中不允许出现#
6.ORACLE里面的WITH语句不支持,修改参数即可支持(需要使用gbase的root用户登录,执行sql。root用户的密码默认为空
gccli -u root -p
show variables like '%cte%';
set global _t_gcluster_support_cte=1;
7.LISTAGG( ) WITHIN GROUP ( ) OVER ( )不支持改为 group_concat函数(需要根据业务逻辑自行修改)
8.group_concat函数不支持,需要修改两个参数
SET GLOBAL group_concat_max_len=102400;
SET SESSION group_concat_max_len=102400;
9.case when不支持子查询,需要用with解决,自行根据sql逻辑改sql
这篇关于oracle迁移至gbase,sql问题总结(完善中)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!