今天由于项目需要,需将Mysql数据库迁移到Oracle数据库
准备工具
1.连接Mysql 的jdbc 驱动 mysql-connector-java-5.0.4-bin.jar
2.Oracle公司开发的 SQL Developer 1.2
一,Mysql迁移到Oracle
下面就是配置SQL Developer 1.2
配置环境
选择Tools-Preferences -Database-Third Party JDBC Driver 点击 Add Entry 添加Mysql的jdbc 驱动。
配置Mysql 和 Oracle 的连接
点击Connection 右键选择 New Connection 分别建立Mysql 和Oracle连接。
建立好连接后,你就可以查看你得数据库了。
配置Repository
选择 Migration -> Repository Management -> Create Repository 创建 Repository。
两种迁移数据方式:
1. Capture the source database or tables
2. Convert the captured database or tables
3. Generate DDL for the new Oracle schema objects
4. Run the generated DDL script to create the new user and objects
5. Copy any data from the source database to the new database,select Migration->Migration Data select a converted model.
快速迁移:
选择你要迁移的表或数据库,选择Migration -> Quick Migrate
二,oracle移植到mysql注意事项
客户用的数据库是mysql,而研发好的产品支持oracle,为了让客户掏腰包,我们必须把数据库环境从oracle转向mysql。我们在转换的过程中碰到了下面一些问题,希望能给同样遭遇的同仁们一些借鉴。如果我们在最初的设计、编码过程中注意数据库的移植性,这种情况下可以完全不需要作额外工作。
一、数据库环境从oracle转向mysql碰到的问题。
因为逻辑不变,所以原则是不改应用程序代码,只改数据库表的创建/初始化sql。下面是我们碰到的问题以及解决办法。
1、 大小写敏感的区别(如果服务器OS是linux)。
在oracle中一般情况下不区分大小写。有时候我们在使用oracle不注意大小写的问题,表名和字段名不加双引号是不区分大小写的,像这样:insert into tableName 和 insert into TABLENAME效果是一样的,用工具导出创建/数据初始化脚本,得到的结果一般表名和字段名转化成了大写。
但在MySQL中,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。数据库对应数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。因此,使用数据库或表实际上是操纵这些文件(夹),所以使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。在以linux为内核的操作系统中是大小写敏感的。
解决的办法是把mysql的数据库名和oracle的大小写保持一致,表名与应用程序中sql字符串中的表名保持一致,如果应用程序中字段名用了双引号,那请把sql中的字段名大小写与双引号里的字符保持一致。如果你的应用程序所引用的表名、字段没有统一大小写,那麻烦就大了。
2、保留字的区别。
像sql语言的函数名(如:inteval,show)等是保留字。Oracle中保留字是可以作为表名和字段名,并且不影响使用,但mysql中保留字是不能作为表名和字段名,如果使用会报语法错误。
解决办法,把sql语句中的保留字用‘`’符号引起来,这个符号位于键盘的tab键上面;如果是字段名还有另外一种方法tablename.字段名。像这样:insert into tablename (id, `interval`) value(….. 或insert into tablename (id, tablename.inteval) value(….. 。
3、数据类型的区别。
在mysql中没有像oracle中的varchar2、number,mysql有与之对应的varchar、numeric,当然在oracle中没有mysql的time类型。
解决办法是替换。
4、自动增长类型的区别。
Oracle有sequence,mysql中没有,但有auto_increment属性。
解决办法是把Oracle中sequence转换成使用auto_increment属性,某些情况可能还有一种办法可以解决问题,新建一个独立的表用来专门记录自动增长型的数据。
5、索引长度限制的区别。
从MySQL 4.1.2开始,MyISAM和InnoDB表索引长度支持1000字节,也就是说索引字段的长度不能超过1000字节,如果超过会报这样的错:ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes。如果是UTF-8编码,相当于333个字符的长度(因为UTF8一个字符占3个字节)。Oracle的索引长度限制比mysql要宽松得多。
解决的办法就不必要多说了,要么改索引的定义,要么改字段的定义长度。
二、为了数据库的兼容性我们应该注意些什么。
数据库的兼容性应该是数据库设计应该重视的一个问题,因为有时候客户存在已经在用的数据库,并且不希望同时维护两个数据库,这样的话兼容多种数据库还能成为产品的一个卖点。
作到数据库的兼容性关键是遵守标准用法。
1、 遵守标准用法,尽量不使用某种数据库特有的用法。
如msyql的‘`’符号的用法,
再比如,很多人有这种用法,在使用oracle开发的时候创建sequence,往表中插数据之前先SELECT seq.nextval FROM DUAL;,然后把查询得到的值作为value插入表中,这种用法没法适应没有sequence的数据库,每个数据库都有自动增长型的用法,如果需要使用就应该完全地使用。
再举个例子,不同的数据库对分页查询作了扩展,postgresql有offset,limit,oracle就没有。
2、 避免数据库大小写敏感的问题。
选择数据库表名和字段名采用大写还是小写,并且在数据库的设计和编码过程中完全统一。
3、 保留字。
要求数据库设计者尽量不使用保留字作表名和字段名。也有很多人有这种用法,在表名和字段名前加‘_’,像这样:create table _tablename ( _id integer)。这样永远不会出现保留字引起的问题。
分享到:
相关推荐
使用DBMover可以灵活定义Mysql和Oracle之间表和字段的对照关系,也可以在DBMover创建一个查询,把查询结果当作源表转入到Oracle中。 Dbmover for Mysql to Oracle 可以定时,定周期自动运行。 支持 Oracle 8i 以后...
MySQL到Oracle转换是一个常见的任务,特别是在企业级应用迁移或整合过程中。这个工具专注于将MySQL的数据库结构和数据转换为Oracle数据库兼容的格式。下面将详细解释这个过程涉及的知识点。 1. **SQL语言的差异**:...
标题所提及的"Oracle MySQL相互转化的工具"主要涉及以下知识点: 1. 数据库结构与数据类型转换:Oracle和MySQL有不同的数据类型,如Oracle的NUMBER对应MySQL的DECIMAL,VARCHAR2对应VARCHAR等。工具需要能识别这些...
Oracle到MySQL转换工具是一款专为数据库迁移设计的实用软件,主要功能是将Oracle数据库中的数据结构和SQL语句转换成MySQL兼容的格式,方便用户在不同的数据库系统间进行数据迁移。这款工具通常适用于那些需要从...
这时,“mysql-oracle数据转换工具”就显得尤为关键。 该工具的核心功能是实现数据的高效、准确转换,确保在两个不同数据库系统间的数据一致性。以下是一些关于MySQL和Oracle数据库以及数据转换的关键知识点: 1. ...
Convert Mysql to Oracle是一个免费的数据库转换工具,实现快速安全地将Mysql数据库导入为ORACLE数据库。 Convert Mysql to Oracle 功能特点 可以转换所有的Mysql字段类型 支持所有版本的Mysql 可以将数据合并到...
本文将详细介绍一个支持多种类型数据库转换的工具,以及在MySQL到Oracle转换过程中涉及的关键知识点。 标题中的“mysql和oracle数据库之间的转换工具”指的是能够帮助用户将MySQL数据库的数据高效、准确地迁移到...
8. **触发器和存储过程**:Oracle数据库支持复杂的触发器和存储过程,转换时可能需要将其转化为MySQL的等效功能。 9. **数据一致性**:在迁移过程中,保证数据的一致性和完整性至关重要。转换工具应有错误检查和...
2. 在Oracle中创建与MySQL主键类型匹配的列和序列。 3. 编写脚本或程序,读取MySQL数据,根据MySQL的主键值生成Oracle的序列号。 4. 插入数据到Oracle,并确保主键值的连续性。 总的来说,MySQL到Oracle的数据同步...
mysql 转换oracle工具,很小,但很好用,记住oracle的表名称和字段名称不能超过30,否则转换失败的
在实际应用中,有时我们需要将数据在MySQL和Oracle之间进行迁移,这通常涉及到数据的导入和导出操作。本篇文章将详细介绍如何通过Java编程实现MySQL到Oracle的数据互导,并提供一个简单的源码示例。 首先,我们要...
1. **表结构映射**:MySQL与Oracle的表结构可能存在差异,如字段类型、主键约束等。工具应能自动或手动进行这些字段的映射,确保数据的正确导入。 2. **数据迁移**:工具需要能够读取MySQL中的数据,并将其按照...
Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在MySQL中可能需要转换为DECIMAL、TEXT或BLOB。例如,Oracle的NUMBER可以转换为MySQL的DECIMAL或...
mysql-oracle-ddl转换工具
MySQL和Oracle都是业界广泛应用的数据库系统,但有时由于业务发展或技术升级,可能需要将数据从MySQL转换到Oracle。本文将深入探讨如何实现这一过程,并提供相关工具及策略。 首先,我们需要了解MySQL和Oracle之间...
2. **SQL语法差异**:MySQL与Oracle之间的主要语法差异包括: - 数据类型:例如,MySQL的`VARCHAR2`在Oracle中是`VARCHAR2`,但MySQL的`TINYINT`对应Oracle的`NUMBER(3)`。 - 约束定义:Oracle使用`CONSTRAINT`...
描述中提到,该工具能够快速地将MySQL中的表结构(建表语句)转化为Oracle兼容的建表语句。在数据库迁移过程中,这样的转换工具至关重要,因为MySQL和Oracle的SQL语法存在差异,例如数据类型、约束条件、索引创建等...
在IT领域,数据库迁移是一项常见的任务,特别是在不同的数据库系统之间,如从MySQL迁移到Oracle。本文将详细讲解如何使用Oracle SQL Developer工具进行这样的迁移过程,以及如何解决在迁移过程中遇到的问题。 首先...
5. MySQL 与 ORACLE 区别 - 功能上:Oracle 提供更多高级特性,如更复杂的数据类型、分区表等。 - 性能上:Oracle 在大型企业级应用中通常表现出更高的性能。 - 价格上:Oracle 通常比 MySQL 成本更高,尤其在...
2. 数据迁移:工具能将MySQL中的数据批量导入到Oracle数据库中,支持不同数据类型之间的转换,保证数据迁移的准确性。 3. 触发器和存储过程转换:MySQL与Oracle在存储过程和触发器的语法上有显著差异。该工具会自动...