`

MySQL与Oracle的数据迁移注意事项,另附转换工具链接

 
阅读更多

将数据从MySQL迁移到Oracle的注意事项

1. 自动增长的数据类型处理

MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。

CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;

INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL

2. 单引号的处理

MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。当然你如果使用 Convert Mysql to Oracle 工具就不用考虑这个问题

3.长字符串的处理

在ORACLE中,INSERT和UPDATE时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告,返回上次操作。

4. 翻页的SQL语句的处理

MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数。ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能用ROWNUM<100, 不能用ROWNUM>80。

以下是经过分析后较好的两种ORACLE翻页SQL语句( ID是唯一关键字的字段名 ):

语句一:

SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;

语句二:

SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (select [FIELD_NAME,...] FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;

5. 日期字段的处理

MYSQL日期字段分DATE和TIME两种,ORACLE日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间为SYSDATE, 精确到秒。

日期字段的数学运算公式有很大的不同。MYSQL找到离当前时间7天用 DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)ORACLE找到离当前时间7天用 DATE_FIELD_NAME >SYSDATE - 7;

6. 字符串的模糊比较

MYSQL里用 字段名 like '%字符串%',ORACLE里也可以用 字段名 like '%字符串%' 但这种方法不能使用索引, 速度不快,用字符串比较函数 instr(字段名,'字符串')>0 会得到更精确的查找结果。

7. 空字符的处理

MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。

-----------------------------------------------------------------华丽的分割-------------------------------------------------------------------

Oracle移植到mysql注意事项

客户用的数据库是mysql,而研发好的产品支持oracle,我们必须把数据库环境从oracle移植到mysql。在移植的过程中碰到了下面一些问题,如果我们在最初的设计、编码过程中注意数据库的移植性,这种情况下可以完全不需要作额外工作。

一、数据库环境从oracle移植到mysql碰到的问题。

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、自动增长类型的区别。

Oracle有sequence,mysql中没有,但有auto_increment属性。

解决办法是把Oracle中sequence转换成使用auto_increment属性,某些情况可能还有一种办法可以解决问题,新建一个独立的表用来专门记录自动增长型的数据。

4、数据类型的区别。

在mysql中没有像oracle中的varchar2、number,mysql有与之对应的varchar、numeric,当然在oracle中没有mysql的time类型。

解决办法是替换。

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、 保留字。

要求数据库设计者尽量不使用保留字作表名和字段名。也有很多人有这种用法,在表名和字段名前加‘_’,像这样:create table _tablename ( _id integer)。这样永远不会出现保留字引起的问题。

3、 避免数据库大小写敏感的问题。

选择数据库表名和字段名采用大写还是小写,并且在数据库的设计和编码过程中完全统一。
当使用 Convert Oracle to Mysql 工具时,请注意“名称转换为大写”这个选项的控制

------------------------------------------------------------------华丽的分割----------------------------------------------------------------

数据库转换软件

各款软件Pro版和基本版的区别在于Pro版支持命令行方式。Pro版就可以把配置文件放到计划任务中,在无人值守的情况下自动定时运行。
截至2009年6月底,将不再提供免费版的数据库转换软件下载,之前下载的软件不影响使用
对于找到软件Bug并协助解决的朋友将免费获得注册版软件。

数据库转换软件列表

数据库转换软件

各款软件Pro版和基本版的区别在于Pro版支持命令行方式。Pro版就可以把配置文件放到计划任务中,在无人值守的情况下自动定时运行。
截至2009年6月底,将不再提供免费版的数据库转换软件下载,之前下载的软件不影响使用
对于找到软件Bug并协助解决的朋友将免费获得注册版软件。

数据库转换软件列表

产品编号 产品描述 价格  
001 Convert Mysql to Oracle - 数据库转换工具,实现Mysql转换为ORACLE数据库 免费 下载数据库转换工具Convert Mysql to Oracle
003 Convert Oracle to Mysql - 数据库转换软件,实现ORACLE转换为Mysql数据库 免费 下载数据库转换软件Convert Oracle to Mysql
005 Convert Mysql to Access - 数据库转换工具,实现Mysql转换为Access数据库 免费 下载数据库转换工具Convert Mysql to Access
007 Convert Oracle to Access - 数据库转换工具,实现Oracle转换为Access数据库 免费 下载数据库转换软件Convert Oracle to Access
分享到:
评论

相关推荐

    mysql与oracle数据迁移工具

    1. 数据迁移概述:数据迁移是将数据从一个数据库系统迁移到另一个的过程,这通常涉及到数据抽取、转换和加载(ETL)。在这个场景下,是从MySQL迁移到Oracle,可能的原因包括性能提升、功能需求或者企业对特定DBMS的...

    迁移mysql数据到oracle上

    ### 迁移MySQL数据到Oracle上的详细步骤 在企业级应用环境中,数据库迁移是一个常见的需求。随着业务的发展或系统架构的变化,将数据从一个数据库管理系统迁移到另一个数据库管理系统的需求日益增多。本文主要介绍...

    mysql导入oracle工具 Convert Mysql to Oracle

    MySQL到Oracle转换工具是一种实用程序,它允许用户将MySQL数据库中的数据和结构迁移到Oracle数据库系统。这个工具对于那些需要在不同数据库系统间迁移数据的IT专业人员来说非常有用,尤其是在组织更换数据库平台或者...

    mysql_oracle_dm整库数据迁移相关资料.rar

    2. **数据迁移工具**:在实际迁移过程中,可能会使用到如Oracle Data Pump、MySQL的mysqldump、达梦的数据迁移工具等。这些工具可以帮助我们将数据从源数据库导出并导入到目标数据库,同时保持数据的一致性和完整性...

    datax插件|clickhouse读写插件|同步mysql,oracle等数据到clickhose中或者反向同步|2020修正版

    综上所述,DataX ClickHouse读写插件为数据迁移提供了强大而灵活的工具,不仅支持MySQL、Oracle等常见数据库到ClickHouse的数据同步,还支持反向同步,满足多样化的数据流动需求。通过合理配置和优化,我们可以高效...

    把mysql数据库中的数据导入到oracle数据库中

    ### 把MySQL数据库中的数据导入到Oracle数据库中的详细步骤与注意事项 #### 一、环境配置与需求概述 本文档旨在详细介绍如何将MySQL数据库中的数据迁移到Oracle数据库中,包括具体的环境配置、迁移流程以及可能...

    oracle迁移mysql说明

    在进行Oracle迁移至MySQL的过程中,需要关注几个关键步骤:首先是使用迁移工具如MetaDB工具完成数据库对象的转换与迁移;接着是通过Navicat等工具进行数据导入;最后是对迁移过程中可能出现的问题进行排查与解决。 ...

    Convert Mysql to Oracle

    在IT行业中,数据库管理系统(DBMS)的选择往往取决于项目需求、性能、安全性等因素。Mysql和Oracle都是业界广泛使用的...在实际使用中,用户应详细阅读工具的文档,了解操作步骤和注意事项,以确保迁移的成功和安全。

    Mysql的表对象Sql语句转换单表,转换成Oracle创建表sql

    8. **注意事项**:数据迁移时需考虑字符集兼容性,因为MySQL和Oracle可能使用的字符集不同,可能导致编码问题。 9. **优化与调整**:转换后的Oracle表可能需要根据Oracle的最佳实践进行一些调整,如分区策略、索引...

    Mysql迁移到Oracle一些需要注意的事项和方案

    - **日期类型转换**:Mysql中的`timestamp`需转为Oracle的`datetime`,因为Oracle的`timestamp`格式与Mysql不同,可能会导致迁移错误。 - **关键字列名处理**:检查并修改Mysql中使用到的Oracle保留关键字,如`...

    Oracle数据库表转换为Mysql

    使用PowerDesigner工具可以轻松地将Oracle数据库表转换为Mysql数据库表,提高了数据库迁移的效率和准确性。但是在转换过程中,需要注意表结构的更改、数据长度的限制和用户权限的处理等问题,以确保转换的正确性和...

    oracle数据库转mysql数据库免费工具

    在需要将Oracle数据库的数据迁移至MySQL时,就需要借助特定的转换工具来实现这一过程。"ora2mysqcn.exe" 就是一个这样的工具,专用于将Oracle数据迁移至MySQL的免费软件。 Oracle数据库是一个高级的关系型数据库...

    Oracle向MySQL_迁移相关事项

    Oracle向MySQL迁移是一个复杂的过程,涉及到多个层面的转换和调整。以下是对迁移过程中的主要知识要点的详细说明: 一、表的移植 在迁移过程中,表的结构和数据是最基础的部分。Oracle的表可以被大多数MySQL的图形...

    oracl转mysql注意事项

    ### Oracle转MySQL注意事项详解 #### 一、概述 在企业级应用中,有时需要将现有的Oracle数据库迁移到MySQL,这不仅涉及到技术上的挑战,还可能影响到整个系统的稳定性和性能。本文档旨在提供一个全面的指南,帮助...

    oracle转换mysql工具1

    标题“Oracle转换MySQL工具1”指的是一个专门用于将Oracle数据库的数据和结构转换为MySQL数据库的软件工具。这个工具可能包含了多种功能,旨在帮助用户轻松地迁移数据,从Oracle环境过渡到MySQL环境。Oracle和MySQL...

    Mysql to Oracle导入导出说明

    MySQL到Oracle的数据迁移是一项常见的任务,特别是在企业级应用中,由于业务需求或系统升级,可能需要将数据从MySQL数据库迁移到Oracle数据库。本说明将详细阐述这个过程中的关键步骤、工具选择以及注意事项。 首先...

    mysql迁移oracle

    7. **风险与注意事项** - 数据迁移可能导致数据丢失,因此在迁移前务必做好备份。 - 考虑到性能影响,尽量在低峰时段进行迁移操作。 - 确保迁移后的 Oracle 数据库用户权限设置正确,以免影响后续的数据库管理和...

    Convert Oracle to Mysql

    - "ora2mysqcn.exe"可能是用于将Oracle数据转换为MySQL格式的工具,其名称暗示了它是中国语言版本。 - 这样的工具通常会自动处理数据类型映射、表结构转换和数据迁移。 5. **数据类型映射**: - Oracle和MySQL的...

    mysql to oracle

    MySQL到Oracle的转换是一个常见的需求,特别是在企业级应用中,可能因为业务发展或技术选型的原因需要进行数据迁移。本文将详细介绍如何使用“Convert Mysql to Oracle”这一免费工具进行数据库转换,以及在这个过程...

    oracle2mysql

    综上所述,"oracle2mysql"工具为Oracle到MySQL的数据迁移提供了便利,但整个过程涉及多个层面,需要全面规划和细心操作。在实际使用中,根据具体需求选择合适的迁移策略和工具,确保数据迁移的顺利进行。

Global site tag (gtag.js) - Google Analytics