1.java 实体的移植
主键生成策略有JPA 提供与Hibernate 提供之分
JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO.
TABLE:使用一个特定的数据库表格来保存主键。
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
IDENTITY:主键由数据库自动生成(主要是自动增长型)
AUTO:主键由程序控制。
这里如果是mysql数据库一般使用Identity,Oracle 使用Sequence。 当使用Auto时,如果使用Oracle且配置了Sequence则使用Sequence,Mysql则使用Identity 。主键生成策略应该配置为Auto 并配置Squeuence,Oracle转mysql 则不会有问题。
2.DDL的问题
Orcale 里可以写 create or replace table Table_name
Mysql 需要变换为 Drop Table Table_name if exists table_name
create table table_name
3.Mysql需要对自增主键添加 auto_increment
Oracle中一般会先建立表然后通过 alter table 设置表的 主键,这时需要注意,我们需要将主键定义在create table语句中进行。
4.Mysql引擎的选择
Mysql5.*默认为Innodb,支持事物以及行锁表锁,所以应选择Innodb ,但是对于使用空间数据的情况需要使用MyISAM,因为Innodb不支持空间数据
5.数据类型的转换
下表是数据类型映射的表
BIGINT |
NUMBER(19, 0) |
BIT |
RAW |
BLOB |
BLOB, RAW |
CHAR |
CHAR |
DATE |
DATE |
DATETIME |
DATE |
DECIMAL |
FLOAT (24) |
DOUBLE |
FLOAT (24) |
DOUBLE PRECISION |
FLOAT (24) |
ENUM |
VARCHAR2 |
FLOAT |
FLOAT |
INT |
NUMBER(10, 0) |
INTEGER |
NUMBER(10, 0) |
LONGBLOB |
BLOB, RAW |
LONGTEXT |
CLOB, RAW |
MEDIUMBLOB |
BLOB, RAW |
MEDIUMINT |
NUMBER(7, 0) |
MEDIUMTEXT |
CLOB, RAW |
NUMERIC |
NUMBER |
REAL |
FLOAT (24) |
SET |
VARCHAR2 |
SMALLINT |
NUMBER(5, 0) |
TEXT |
VARCHAR2, CLOB |
TIME |
DATE |
TIMESTAMP |
DATE |
TINYBLOB |
RAW |
TINYINT |
NUMBER(3, 0) |
TINYTEXT |
VARCHAR2 |
VARCHAR |
VARCHAR2, CLOB |
YEAR |
NUMBER |
主要关注date,number,varchar2 的转换。其中需要注意 varchar2 的转换,因为在oracle 中varchar2表示存储的字节数,与编码有关,而mysql中varchar则没有,mysql中varchar(30)表示存储30个字符,所以此处需要注意。至于date 因为不需要支持微妙,所以我使用timestamp储存了。
6.常用的系统函数变化
to_date --> char_to_date to_char-->date_to_char ||-->concat
7. hql 中需要注意,避免使用原始sql尽量使用hql,尤其是日期处理。对于空串的处理,在oracle中 varchar2下传入空串则oracle作为 null处理,所以你搜索空串是无结果的
但是mysql中是有空串的. mysql中需要为子查询设置别名要么也会报错。分页查询,mysql中没有rownum,可以使用limit实现,建议使用hql。
8.注意切换hibernate方言
9.触发器与存储过程
oracle的触发器比较高端,对于行触发器支持到按照某列改变触发,而mysql只支持行触发。 oracle中可以判断当前操作类型update,delete 还是 insert,mysql只能分开写 了。变量声明的语法也不相同,需要注意(会详细写一篇)
10。获取当前使用的数据库
我的方法比较屌丝根据Hibernate方言判断使用哪种
11.一些语法上的限制
1). Every derived table must have its own alias
遇到这个问题驱动表需要有一个别名,比如 select sum(money) sum from (select * from guest limit 0,10) t;
2)delete from decode_resource re where re.decode_resource_id=1
这个地方原因未知,delete 中不可以表的别名?去掉re即可
相关推荐
"Convert Oracle to Mysql"这个主题涉及到将Oracle数据库系统的数据迁移至MySQL数据库系统的过程。Oracle和MySQL都是广泛使用的数据库管理系统,但它们在架构、语法和管理方面存在显著差异。以下是关于这个过程的...
Oracle到MySQL转换工具是一种专门设计用于帮助用户将Oracle数据库中的数据和结构迁移至MySQL数据库的应用程序。这个过程通常称为数据库迁移或数据迁移,是企业在更换数据库系统时常常面临的需求。以下是一些关于...
many MySQL customers are migrating from Oracle because they have reached the conclusion that the combination of cost-savings and feature set of MySQL make for a compelling business case to offload ...
Oracle to MySQL Oracle 转 MySQL亲自测试,好用
OracleToMysql转换器是一款专为数据库管理员设计的实用工具,旨在实现从Oracle数据库到Mysql数据库的数据迁移。这个工具能够高效地处理不同数据库结构之间的转换,确保在切换过程中数据的完整性和一致性。 Oracle...
银行数据库改造之路:Oracle to MySQL迁移实践 本文档主要讨论银行数据库改造之路,从 Oracle 到 MySQL 的迁移实践。迁移的原因主要有稳定性、预估业务量、技术支持、轻量级、实际业务量、学习周期、国货化趋势等。...
标题“Oracle to MySQL”指的是将数据从Oracle数据库迁移至MySQL数据库的过程。这通常涉及到数据库结构的转换、数据的迁移以及可能的兼容性问题解决。Oracle和MySQL是两种广泛应用的关系型数据库管理系统(RDBMS),...
本压缩包文件"OracleToMysql数据同步.rar"似乎提供了一个解决方案,旨在帮助用户将Oracle数据库中的数据高效地迁移到MySQL数据库中。以下是关于这个主题的详细知识: 1. 数据库迁移基础:数据库迁移是将数据从一个...
Oracle到MySQL的数据迁移是一项常见的任务,特别是在企业进行数据库系统升级或整合时。Oracle数据库以其强大的功能和稳定性在大型企业中广泛应用,而MySQL由于其开源、轻量级和成本效益高的特性,在中小型企业及...
### Oracle到MySQL的数据迁移技术方案 #### 一、概述 在企业级应用中,数据库迁移是常见的需求之一,尤其在面对成本控制和技术升级时更是如此。Oracle与MySQL作为两种广泛使用的数据库管理系统,前者通常用于大型...
Oracle到MySQL转换是一个常见的数据库迁移任务,特别是在企业寻求降低成本、提高效率或利用MySQL的开源优势时。这个实用工具专门设计用于将Oracle数据库中的数据高效、完整地迁移到MySQL环境中。以下是一些关于这个...
Spring Boot作为Java领域的一个热门微服务框架,提供了强大的定时任务功能,能够帮助我们实现不同数据库间的数据同步,比如Oracle到MySQL。本篇文章将详细讲解如何利用Spring Boot的定时任务特性,结合Java的相关...
Oracle GoldenGate 21.3 是一款强大的数据复制和实时数据集成工具,支持在Oracle数据库与MySQL数据库之间进行数据同步。在21.3版本中,GoldenGate引入了微服务架构,这使得部署和管理更加灵活,提高了系统的可扩展性...
标题“Oracle到MySQL”指的是一个转换工具,它能够帮助用户将数据从Oracle数据库无缝迁移到MySQL数据库。这个过程通常在数据库管理系统(DBMS)更换、数据迁移或扩展服务时进行。Oracle是全球知名的商业数据库系统,...
Dbmover for Mysql to Oracle 是高效的将Mysql导入到Oracle数据库的工具。 使用DBMover可以灵活定义Mysql和Oracle之间表和字段的对照关系,也可以在DBMover创建一个查询,把查询结果当作源表转入到Oracle中。 ...
OracleToMysql.exe很可能就是这个转换工具的执行程序,它可能包含以下功能: 1. **SQL语法转换**:Oracle SQL和MySQL SQL在语法上有区别,如数据类型、子查询、游标、触发器等。工具会识别Oracle SQL语句并转换为...
MySQL to Oracle MySQL 转 Oracle亲自测试,好用
### Oracle与MySQL对比 在数据库管理系统领域,Oracle与MySQL都是极具影响力的选择,分别代表了企业级数据库和开源数据库的不同特点。下面将从安装目录、管理工具、客户端工具、基本操作命令等方面进行详细的对比...