在线QQ客服:1922638
专业的SQL Server、MySQL数据库同步软件
首先,数据库脚本迁移
?
1,数据结构同步
打开Navicat Premium,单击菜单[工具]-[数据传输],然后在弹出的对话框中选择相应的源库和目标库。
创建SEQUENCE SEQ_ACCOUNT_INFO,以1个最小值1开始,以1个NOMAXVALUE NOCACHE开始;
?
?
第二,系统配置调整
1.将Oracle数据库驱动程序添加到pom文件中
\ lt;依赖项
\ lt; groupId com.oracle \ lt;/groupId
\ lt; artifactId ojdbc14 \ lt;/artifactId \\ u>
\ lt;版本\ 10.2.0.4.0 \ lt;/版本gt;
\ lt;范围系统\ lt;/作用域
\ lt; systemPath $ {project_basedir}/lib/ojdbc14-10.2.0.4.0.jar\\u0026lt;/systemPath\\u0026gt;
\ lt;/依存关系
?
2.调整数据源
Jdbc.properties配置调整
db.driverClassName = oracle.jdbc.driver.OracleDriver
db.url = jdbc:oracle:薄:@ 10.10.1.107:1521:orcl
db.username = root
db.password =根
db.mapper =类路径:mybatis/oracle/* Mapper.xml
validationQuery =从DUAL中选择" x"
?
三,Java背景调整
?
1.在Mapper文件中,将自动递增的主键调整为Oracle序列模式
原始的MySQL方法如下:
\ lt; selectKey resultType =" java.lang.Long" keyProperty =" id" order ="之前" \ gt;
选择LAST_INSERT_ID()
\ lt;/selectKey
Oracle排序方法如下:
\ lt; selectKey resultType =" java.lang.Long" keyProperty =" id" order ="之前" \ gt;
从双重选择SEQ_ACCOUNT_INFO.NEXTVAL
\ lt;/selectKey
?
2.日期(时间)类型调整
?
日期格式
MySQL数据库使用DATE_FORMAT(日期,格式)函数将日期格式化为字符串,格式可用的标识符为:%Y(年),%m(月),%H(小时),%i (分钟),%S(秒)等。常用格式为”%Y-%m-%d”,”%H:%i:%S”,”%Y%m”等。
Oracle数据库使用TO_CHAR(日期,格式)函数格式化日期,例如格式化当前日期: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(间隔,datetime_expr1,datetime_expr2)函数来计算时间差,其中间隔可以是YEAR(年),QUARTER(季度),MONTH(月),WEEK(周),DAY(天) ),HOUR(小时),MINUTE(分钟),SECOND(秒),FRAC_SECOND(毫秒),例如计算到2017年5月1日为止的天数:
SELECT TIMESTAMPDIFF(日期," 2017-05-01",现在());
? MySQL还具有许多计算时间差的函数,例如DATEDIFF(date1,date2)等等。
? Oracle数据库通过减去两个日期直接计算时差,例如计算到2017年5月1日为止的天数:
?计算自2017年5月1日以来的小时数:
SELECT FLOOR(TO_NUMBER(SYSDATE-TO_DATE(" 2017-5-1 00:00:00"," yyyy-mm-dd hh24:mi:ss"))* 24)从双;
?
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和Oracle遵循相同的标准。
?
5.您不能在Oracle的GROUP BY子句中使用列别名。
?
6.在Oracle中不能将单引号添加到别名中。
?
7.MySQL批处理插入和更新必须转换为以begin end开头的Oracle批处理插入和更新
开始
声明
;结束;
?