`

Oracle移植到MySQL时需要注意的问题

阅读更多
Oracle移植到MySQL时需要注意的问题
在实际运行中我们经常会遇到以下的一些问题,今天我们拿出这些问题,希望给遭遇相同问题的计算机一族提供相关借鉴。如果我们在最初的设计、编码过程中注意数据库的移植性,这种情况下可以完全不需要作额外工作。

  一、数据库环境从Oracle转向mysql碰到的问题。

  因为逻辑不变,所以原则是不改应用程序代码,只改数据库表的创建/初始化sql。下面是我们碰到的问题以及解决办法。

  1、 大小写敏感的区别(如果服务器OS是linux)

  在Oracle中一般情况下不区分大小写。有时候我们在使用Oracle不注意大小写的问题,表名和字段名不加双引号是不区分大小写的,像这样:insert into tableName 和 insert into TABLENAME效果是一样的,用工具导出创建/数据初始化脚本,得到的结果一般表名和字段名转化成了大写。

  但在MySQL中,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。数据库对应数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。因此,使用数据库或表实际上是操纵这些文件(夹),所以使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。在以linux为内核的操作系统中是大小写敏感的。

  解决的办法是把Oracle移植到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,Oracle移植到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的索引长度限制比Oracle移植到mysql要宽松得多。

  解决的办法就不必要多说了,要么改索引的定义,要么改字段的定义长度。

  二、为了数据库的兼容性我们应该注意些什么

  数据库的兼容性应该是数据库设计应该重视的一个问题,因为有时候客户存在已经在用的数据库,并且不希望同时维护两个数据库,这样的话兼容多种数据库还能成为产品的一个卖点。

  作到数据库的兼容性关键是遵守标准用法。

  1、 遵守标准用法,尽量不使用某种数据库特有的用法。

  如msyql的‘`’符号的用法,

  再比如,很多人有这种用法,在使用Oracle开发的时候创建sequence,往表中插数据之前先SELECT seq.nextval FROM DUAL;,然后把查询得到的值作为value插入表中,这种用法没法适应没有sequence的数据库,每个数据库都有自动增长型的用法,如果需要使用就应该完全地使用。

  再举个例子,不同的数据库对分页查询作了扩展,postgresql有offset,limit,Oracle就没有。

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

  选择数据库表名和字段名采用大写还是小写,并且在数据库的设计和编码过程中完全统一。

  3、 保留字。

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

  上述的相关内容就是对Oracle移植到mysql注意事项的描述,希望会给你带来一些帮助。

Oracle移植到MySQL时需要注意的问题
转于:http://www.searchdatabase.com.cn/showcontent_33988.htm
分享到:
评论

相关推荐

    记使用Oracle SQL Developer 迁移MySql 数据至 Oracle.docx

    总结来说,从MySQL到Oracle的数据迁移是一个涉及多个步骤的过程,需要正确配置和管理数据库环境,确保用户和表空间设置正确,并且使用像SQL Developer这样的工具来简化迁移。在迁移过程中遇到问题时,要逐一排查,如...

    Oracle数据库移植到MySQL实战

    项目做好了,更高的要求被提出来,比如,要多数据库支持,怎么办?...  作为一个开源数据库,MySQL用无数案例证明了她的可用性,因此让我们把重点放在如何将Oracle移植到MySQL上。已经有很多的文章和专题介绍了Ora

    oracle 数据库 迁移 mysql

    Oracle到MySQL转换器是将数据库从Oracle迁移到MySQL服务器的工具。由于直接连接到源数据库和目标数据库,该程序保证了转换过程的高性能。它不使用ODBC或任何其他中间件组件。不需要安装Oracle组件。安装包包括产品到...

    mysql中表与数据移植到oracle的纯绿色软件

    近些天在做一个同步功能,需要将mysql数据库中的某两张表的数据同步到oracle,考虑到表的字段较多,一个个写肯定不行,借助工具Convert Mysql to Oracle来转换!mysql中表与数据移植到oracle的纯绿色软件

    数据库迁移之从oracle 到 MySQL

    本篇文章将详述从Oracle数据库到MySQL的迁移过程,主要关注关键步骤、工具选择以及可能遇到的问题。 首先,我们需要理解Oracle和MySQL之间的核心差异。Oracle是商业级的关系型数据库管理系统,以其强大的性能和高级...

    Mysql迁移Oracle方案

    在进行MySQL到Oracle的数据迁移之前,首先需要做好一系列的准备工作。 ##### 1.1 导入机 - **安装Oracle 11g数据库**:确保安装过程中正确配置数据库的各项参数,包括数据库实例名、管理端口等。 - **安装MySQL...

    mysql 数据移植到oracle

    在IT行业中,数据库迁移是一项常见的任务,特别是在不同的...综上,从MySQL到Oracle的数据移植是一个涉及多个环节的复杂过程,需要综合考虑技术、性能、安全和业务需求。通过适当的规划和执行,可以成功实现平滑过渡。

    ORACLE移植到SQL SERVER上的软件

    在这种情况下,"ORACLE移植到SQL SERVER上的软件"提供了一种解决方案。 该软件的主要功能是使用“SQL Server Migration Assistant”(SSMA),特别是针对Oracle的版本——SSMA for Oracle。SSMA是一种工具,它简化...

    oracle_mysql系统移植方案归类.pdf

    MySQL的视图在某些方面可能有特定限制,比如SELECT语句的复杂性,这可能影响到从Oracle移植过来的视图的兼容性。在移植过程中,需要检查并调整视图定义以适应MySQL的语法和限制。 6. **移植策略**: - 数据转换:...

    oracle_mysql系统移植方案[参照].pdf

    【Oracle到MySQL系统移植的关键知识点】 在软件开发中,数据库系统的迁移是一项复杂的工作,尤其是在从Oracle这样的高级数据库系统迁移到MySQL时。Oracle MySQL系统移植方案主要关注数据类型、SQL语法和特定功能的...

    oracle到mysql的迁移

    本文主要探讨了将Oracle数据库环境迁移到MySQL时遇到的问题及解决策略。 1. **大小写敏感性差异**:Oracle数据库在默认情况下不区分大小写,但在MySQL中,特别是在Linux操作系统上,数据库名和表名是大小写敏感的。...

    Oracle到mysql转换的问题总结.doc

    Oracle到MySQL转换的过程中,会遇到一系列的语法差异和功能不匹配的问题。以下是对这些关键问题的详细说明: 1. **字段类型的区别**: - `NUMBER(10,0)`在Oracle中相当于MySQL的`INT`,而`NUMBER(10,2)`则对应`...

    Oracle向MySQL_迁移相关事项

    用户权限的移植涉及到角色和权限的重新分配,视图的语法可能需要调整,索引类型的变化(如Oracle的位图索引),同义词在MySQL中可能需要通过别名来实现,游标和约束的语法也存在差异。 六、SQL语句的调整 由于...

    JAVA ORACLE MYSQL 驱动程序

    分别是Type 1、Type 2、Type 3和Type 4,其中Oracle的 Thin driver 和 MySQL的JDBC驱动都属于Type 4,即纯Java的网络驱动,它们不需要任何中间层就能直接与数据库通信,提供了更好的性能和可移植性。 总的来说,...

    基于某某平台的数据源迁移oracle -mysql

    起初,项目使用的是本地 Oracle 数据库作为数据源,但考虑到每次运行系统都需要手动启动,并且需要在本地安装数据库的情况,这种配置显然不利于系统的移植和推广。因此,决定将数据源从 Oracle 迁移到 MySQL,以提高...

    MySQL数据库移植到Oracle

    先有个免费工具,但每个表只能移植5条记录(clob blob等大数据类型都能处理)。若要代码自动批量移植,请MSN联系:dy-fairy@hotmail.com

    oracle to mysql

    总之,Oracle到MySQL的数据移植是一项复杂的工作,涉及到多个层面的技术问题,包括但不限于数据类型映射、数据转换、数据库结构的重构以及后期的测试和维护。通过使用专业工具和遵循适当的迁移流程,可以有效地降低...

    JDBC Oracle10G MySql 5.1.57 SqlServer2k 2k5 驱动

    这些驱动程序通常以JAR文件的形式提供,Java应用程序在运行时需要将其添加到类路径中才能正常使用。 综上所述,这个压缩包包含了一系列用于Java开发的数据库驱动程序,可以支持Java应用程序与Oracle 10g、MySQL ...

    Oracle 示例方案 ----Mysql版数据脚本

    不过需要注意的是,虽然这个脚本可以帮助你在MySQL中复现Oracle的HR方案,但并非所有Oracle的特性都能完全移植,例如Oracle的某些特定功能或高级特性可能在MySQL中没有直接的对应项。因此,在实际应用中,需要根据...

Global site tag (gtag.js) - Google Analytics