引入:多数据库适配-数据源oracle->mysql兼容切换
下文,小编主要以oracle->mysql适配为例->常见问答q-a的方式阐述:
补充记录:从高版本->低版本,数据导出->导入会出现如下异常
接着,通过sql查询当前oracle版本,
select * from v$version
此时,通过notepad 修改dmp文件中版本信息为
再次执行imp命令,
[oracle@localhost ~]$ imp yd_dev_tmp/user@ip/orcl file=/home/oracle/xxx.dmp ignore=y full=y;
成功导入数据泵.dmp文件。(其中,可通过su - oracle进入oracle目录,dmp文件可上传到/home/oracle路径)
上述列举了部分常见的函数,
1、coalesce函数 && nvl函数
mysql:coalesce()
oracle:coalesce()、nvl()
coalesce函数在mysql跟oracle都适用,nvl函数在oracle中适用,coalesce可替换nvl。
2、str_to_date函数 && to_date函数
mysql:str_to_date(field,'yyyy-mm-dd')
oracle:to_date(field,'yyyy-mm-dd hh24:mi:ss')
3、convert函数 && to_char函数
mysql:convert(field,char)
oracle:to_char(field)
4、date_format函数 && to_char函数
mysql:date_format(field,'%y-%m-%d')
oracle:to_char(field,'yyyy-mm-dd')
mysql日期区间计算,
对应java中常用orm映射框架mybatis中xml写法-sql,其中。
oracle日期区间计算,
mysql与oracle正则表达式,可参考之前在墨天轮问答-给出正则regexp的解答,
oracle函数decode,
decode(a.klx,'01','居民身份证','02','居民户口簿','03','护照','04','军官证','05','驾驶证','06','港澳居民来往内地通行证','07','台湾居民来往内地通行证','其他')
mysql函数if可实现oracle中decode效果,
if(a.klx='01','居民身份证',if(a.klx='02','居民户口簿',if(a.klx='03','护照',if(a.klx='04','军官证',if(a.klx='05','驾驶证',if(a.klx='06','港澳居民来往内地通行证',if(a.klx='07','港澳居民来往内地通行证','其他')))))))
mysql视图中函数,
oracle视图中函数,
基于mybatis插件的思想,根据当前数据库databaseid,拦截sql,加入各自数据库的sql方言函数兼容,无需多套数据库xml中sql写法。后续考虑在github上开源一款sql插件,支持插拔式-需要时开启。
可自动将复杂sql填充参数,打印sql语句,
并打印其执行计划及耗时,助力于生产环境分析sql,排查问题,性能优化。
引出这样一个小场景-思考:当你需要作多数据库兼容适配的时候,想提前预估需要改动的一个数量级,这时若需要对数据库层中各个sql方言编写测试用例,作成功或失败率评估,那么如何拥有一个java版本,单元测试用例-代码自动生成器,根据类名配置,即可知晓当前类中所有sql方言的成功或失败率?^_^
当然,我们也可以在工作之余去看看其他的开发语言,php,python,go......
文末:
回顾更多精彩请点击^_^,记一次基于鲲鹏欧拉操作系统opengauss实践过程
「 往期文章 」