一、数据库脚本迁移
1、数据结构同步
打开Navicat Premium,点击菜单【工具】-【数据传输】,在弹出的对话框中选择对应的源库和目标库。
为使用方便,请在TAB页【高级】中,将【转换对象名为】勾选,并选择【大写】。设置完成后点击【开始】按钮即可进行数据脚本同步。
注意:数据传输过程中,可能会因为MySQL数据库设计的不规范导致出现异常,请及时修正源库对应的数据结构。Oracle中标识符的最大长度是30个字符,标识符包括但不限于表名、字段名、视图名、序列名、主键。
2、表结构调整
Navicat Premium数据同步时,不对列长度进行精确设置(保留默认长度),故需要在数据结构同步完成以后再将Oracle数据库脚本导出并对列的长度进行精确的设置。
注意:Oracle数据库表中有数据时不能直接修改表结构,所以建议导出数据库脚本,在脚本中进行修改。另外,Navicat Premium导出的SQL包含前缀和双引号,请在导出后去除。
3、添加sequence
Oracle表的主键自增是通过sequence实现的,故需要为表自增主键添加sequence,sequence创建示例如下:
CREATE SEQUENCE SEQ_ACCOUNT_INFO INCREMENT BY 1 START WITH 1 minvalue 1 NOMAXVALUE NOCACHE;
二、系统配置调整
1、pom文件中添加Oracle数据库驱动
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.4.0</version> <scope>system</scope> <systemPath>${project_basedir}/lib/ojdbc14-10.2.0.4.0.jar</systemPath> </dependency>
2、调整数据源
jdbc.properties配置调整
db.driverClassName=oracle.jdbc.driver.OracleDriver db.url=jdbc:oracle:thin:@10.10.1.107:1521:orcl db.username=root db.password=root db.mapper=classpath:mybatis/oracle/*Mapper.xml validationQuery=SELECT 'x' FROM DUAL
三、Java后台调整
1、 Mapper文件中,自增主键调整为Oracle的sequence方式
原MySQL的方式如下:
<selectKey resultType="java.lang.Long" keyProperty="id" order="BEFORE" > SELECT LAST_INSERT_ID() </selectKey>
Oracle的sequence方式如下:
<selectKey resultType="java.lang.Long" keyProperty="id" order="BEFORE" > SELECT SEQ_ACCOUNT_INFO.NEXTVAL FROM DUAL </selectKey>
2、日期(时间)类型调整
日期格式化
MySQL数据库通过DATE_FORMAT(date,format)函数将日期格式化为字符串,其中format可用的标识符有:%Y(年)、%m(月)、%H(小时)、%i(分钟)、%S(秒)等等,常用的格式有'%Y-%m-%d'、'%H:%i:%S'、'%Y%m'等。
Oracle数据库使用TO_CHAR(date,format)函数对日期进行格式化,如对当前日期进行格式化:TO_CHAR(SYSDATE,'yyyy-mm-dd HH:mi:ss')。
另外,MySQL是弱类型的数据类型,在字符串转日期(其他类型也一样)时只要符合日期格式不需要进行类型转换,但是Oracle必须进行类型转换。Oracle提供了TO_DATE(date_str,'yyyy-mm-dd hh24:mi:ss')函数将字符串转换为日期类型。
取当前日期的函数
MySQL常用取当前日期(时间)的函数有:NOW()、SYSDATE()、CURDATE()、CURTIME()等。Oracle中使用SYSDATE。
计算时间差
MySQL数据库使用TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)函数来计算时差,其中interval可以是YEAR(年)、QUARTER(季度)、MONTH(月)、WEEK(星期)、DAY(天)、HOUR(小时)、MINUTE(分钟)、SECOND(秒) 、FRAC_SECOND(毫秒),如计算2017年五一劳动节距今的天数:
SELECT TIMESTAMPDIFF(day,'2017-05-01',now());
MySQL还有很多计算时间差的函数,如DATEDIFF(date1,date2)等。
Oracle数据库直接通过两日期相减来实现时间差的计算,如计算2017年五一劳动节距今的天数:
SELECT FLOOR(SYSDATE-TO_DATE('2017-5-1','yyyy-mm-dd')) FROM DUAL ;
计算2017年五一距今的小时数:
SELECT FLOOR(TO_NUMBER(SYSDATE-TO_DATE('2017-5-1 00:00:00','yyyy-mm-dd hh24:mi:ss'))*24) FROM DUAL ;
3、模糊查询
MySQL使用
concat('%',#{keywords},'%')
Oracle中使用
'%'||#{keywords}||'%'
四、 常见问题
1、去除重复列,防止在oracle分页查询时报错:ORA-00918: 未明确定义列。
2、出现ORA-00942: 表或视图不存在错误,可能是数据库表名错误,也可能是没有权限或者账号不存在等等。
3、MySQL 字符串支持单引号和双引号,但Oracle只支持单引号。
4、Oracle里进行分组统计时,非聚合列必须全部放在group by 子句中。如果还涉及到排序,排序的列也必须在group by 子句中。MySQL 5.7之前对分组统计没有强制约束,5.7之后 和oracle遵循相同的标准。
5、不能在Oracle的GROUP BY子句中使用列别名。
6、Oracle 中别名不能加单引号。
7、MySQL 的批量插入、更新转换为 Oracle 的批量插入、更新时需加上begin end
BEGIN statement ; END ;
相关推荐
将mysql的数据库表迁移到oracle中,使用sql developer 工具进行迁移,在迁移过程中遇到了很多坑,比如视图或表不存在错误,本文都进行了一一讲解,亲测成功。
Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结
2.2.1 连接本机mysql数据库 2.2.2 连接生产oracle数据库 2.3 执行迁移 2.3.1 关联移植资料档案库 2.3.2 捕获方案 2.3.3 设置数据映射 2.3.4 转换为oracle模型 2.3.5 生成数据结构执行脚本 2.3.6 迁移数据结构 2.3.7 ...
ORACLE数据库迁移方案,单机迁移到rac
Convert Mysql to Oracle,已将instantclient12_1下找dll结尾的文件拷贝到Convert Mysql to Oracle的安装目录,直接打开此工具就可以了。
NULL 博文链接:https://noobjava.iteye.com/blog/870011
Dbmover for Mysql to Oracle 是高效的将Mysql导入到Oracle数据库的工具。 使用DBMover可以灵活定义Mysql和Oracle之间表和字段的对照关系,也可以在DBMover创建一个查询,把查询结果当作源表转入到Oracle中。 ...
Mysql迁移到Oracle一些需要注意的事项和方案: MySql数据库迁移到Oracle有两种途径: 1>可以用手动修改 2>采用开发工具sqldeveloper客户端工具 一.迁移前的准备 二.迁移操作步骤 三.迁移后的维护 四.修改代码
oracle向mysql建表语句的迁移。 直接表结构的生成sql脚本
从Oracle迁移到MySQL经典实战,省钱公司必备
Oracle导Mysql适用于百、千万级别数据迁移,速度是kettle的10倍以上数据库迁移 数据迁移 千万级 亿万级数据,MySQL oracle关系型 现需要开发一套程序用来快速迁移数据库,要求如下: 1.使用人员可以指定迁移数据库...
Oracle和Mysql互相迁移数据,可同时迁移多个不同数据库数据(并发的将数据在oracle和mysql之间随意迁移),效率高(实际测试表明,将100万数据从oracle迁移到mysql耗时2分30秒,其中1分30秒耗在oracle查询上),支持...
从Mysql转到Oracle前需了解的50件事 解压密码
数据迁移 oracle转mysql oracle数据迁移 mysql数据迁移 从Oracle迁移数据到MySql-工具oracle2mysqlcn 从Oracle迁移数据到MySql方法大全文章地址: http://www.bywei.cn/post/111.html
1.使用人员可以指定迁移数据库类型 如:(orcal,sqlServer,csv 迁移至mysql) 2.在迁移数据库时,可以只迁移指定字段. 3.开发多任务的平台,按权重去执行任务,如:权重为1,1,2,3,4 那么1,1的权重一起执行,执行完毕后2...
分别有:数据源配置、数据表结构转换、字段更新、数据迁移、根据oracle SQL的UPDATE DELETE 事物执行记录转为Mysql可执行SQL,同步执行到MySql数据库,此项目为个人兴趣爱好练手项目,项目问题欢迎留言,共同进步...
Mysql迁移到Oracle[整理].pdf
迁移mysql数据到oracle上,详细描述步骤。
由于Mysql可以节约费用,并且其稳定性和功能也在提高,所以部分用户希望从Oracle迁移到Mysql上。本文就介绍了一下用PHP将Oracle迁移到Mysql的过程中用到的技术要领及一些注意事项。
Mysql迁移到Oracle-附件资源