oralce迁移Mysql问题总结

摘要:
最近从oracle数据库迁移到Mysql,总结了一些不兼容和需要注意的地方,持久层用的Mybatis1guid尽量用代码生成现象:sys_guid()mysql报错,mysql对应的为UUID(),但是带横线,需要替换为replace(uuid(),'-',''),所以最好用代码生成,这样直接就通用了2最好不用nvl、ifnull等特性函数现象:nvl为oracle特性函数,在mysql报错,统一

最近从oracle数据库迁移到Mysql, 总结了一些不兼容和需要注意的地方,持久层用的Mybatis

1 guid尽量用代码生成

现象:sys_guid() mysql报错,mysql对应的为UUID(),但是带横线,需要替换为 replace(uuid(),'-',''),所以最好用代码生成, 这样直接就通用了

2 最好不用nvl、ifnull等特性函数

现象:nvl为oracle特性函数,在mysql报错,统一替换为case when then else end

3 子查询请带上别名

现象:子查询不带别名oracle可以通过,mysql语法错误

4 最好不用decode()函数

现象:同nvl,替换为case when then else end

5 删除语句不要给表加别名

现象:mysql删除语句不支持表别名(但是Oracle支持,所以为了通用删除时不要使用别名)

6 删除语句最好加上from关键字

现象: mysql删除必须是delete from table,oracle可以是delete table为了通用要加上from

7 字段别名统一大写

现象:mysql没有自动转换为大写,oracle会自动转换为大写,为了代码能统一取值,别名统一大写

8 分页查询没有找到兼容的写法,找到简单改写方法

简单修改的办法:rownum替换为@num,不然就是重新写一个mysql分页

原oracle

oralce迁移Mysql问题总结第1张

mysql

oralce迁移Mysql问题总结第2张

9 批量插入不要用insert all,用兼容写法

现象:insert all等语法mysql不支持,报错

改为

oralce迁移Mysql问题总结第3张

10 日期无法兼容,有转换方法

现象:之前的to_date写法导致Mysql报错

改为拆分两份

oralce迁移Mysql问题总结第4张

11不用 || 连字符

现象:mysql不支持,统一改为concat(str,str2)函数

12 concat函数只能使用两个参数

现象:不能使用concat(str,str2,str3),mysql支持,oracle不支持

13 wm_concat()行列转换无法兼容,有转换方法

方案:oracle wm_concat() 对应mysql group_concat()

14 从oracle迁移到mysql的数据,number类型被Mysql默认成了这个鬼样子(不确定是不是迁移引起)

现象:mysql显示类型

oralce迁移Mysql问题总结第5张

导致报错

oralce迁移Mysql问题总结第6张

方案:修改字段小数点为0,如果确定不是迁移过程引起,则需要整理脚本统一修改

其实1、2、3、4、5、6、7、9、11、12项是可以加入开发规范和开发禁用列表的

免责声明:文章转载自《oralce迁移Mysql问题总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇打造自己的数据访问层(一)hadoop2升级的那点事情(详解)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL_python‑1.2.5‑cp27‑none‑win_amd64.whl is not a valid wheel filename.

转载:https://blog.csdn.net/boahock/article/details/78701374 MySQL-Python 数据库驱动安装 pip install mysql_python失败 不支持windows操作系统 解决: 自行下载安装:http://www.lfd.uci.edu/~gohlke/pythonlibs/...

mysql 怎么通过sql语句批量去掉某一个表中某一个字段的多余字符

采用替换,把”<img src="http://t.zoukankan.com/“替换为空格," />也替换为空格,曾经在网上看到过这样的SQL,替换字段中字符串中的某些字符update 表名 set 要修改的字段名= replace(要修改的字段名,‘<img src="http://t.zoukankan.com/’,'')updat...

MySQL升级方法一

1、在目标服务器上安装新版本的mysql数据库。 1)解压缩新版mysql数据库压缩包并cp到指定目录: [root@faspdev mnt]# tar -zxvf mysql-5.6.24-linux-glibc2.5-x86_64.tar.gz [root@faspdev local]# mv /mnt/mysql-5.6.24-linux-glib...

Linux(三)—— 项目部署环境搭建

项目部署环境搭建 目录 项目部署环境搭建 一、linux上网 二、rpm包管理 1、光盘挂载 2、安装卸载rpm包 3、查询是否安装 4、查看软件包 5、互相依赖关系的软件包 三、yum包管理 1、使用aliyun的yum源 2、使用yum安装软件 3、查看yum源的软件包 4、删除软件包 5、优化yum源 (1)使用本地源 (2)局域网y...

mysql 重置当前的自动增量值

mysql的语法与sql server的语法不同 1. sql server sql server的语法dbcc checkident('tablename',reseed,5) 2. mysql mysql的语法是ALTER TABLE tablename AUTO_INCREMENT = 5; 其中tablename是表名,5是重置之后的自动增量值大小...

C#_MySql 主从复制

一、业务发展驱动数据发展   随着网站业务的不断发展,用户量的不断增加,数据量成倍地增长,数据库的访问量也呈线性地增长。特别是在用户访问高峰期间,并发访问量突然增大,数据库的负载压力也会增大,如果架构方案不够健壮,那么数据库服务器很有可能在高并发访问负载压力下宕机,造成数据访问服务的失效,从而导致网站的业务中断,给公司和用户造成双重损失。那么,有木有一种方...