有很多应用项目, 刚起步的时候用MYSQL数据库基本上能实现各种功能需求,随着应用用户的增多,数据量的增加,MYSQL渐渐地出现不堪重负的情况:连接很慢甚至宕机,于是就有把数据从MYSQL迁到 ORACLE的需求,应用程序也要相应做一些修改。
本人总结出以下几点注意事项,希望对大家有所帮助。
1. 自动增长的数据类型处理 MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。 ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。 CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE; 其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999 INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL
2. 单引号的处理 MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
3. 翻页的SQL语句的处理 MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数;PHP里还可以用SEEK定位到结果集的位置。 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;
4. 长字符串的处理 长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于 4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告, 返回上次操作。
5. 日期字段的处理 MYSQL日期字段分DATE和TIME两种,ORACLE日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间为SYSDATE, 精确到秒,或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’) 年-月-日 24小时:分钟:秒 的格式YYYY-MM-DD HH24:MI:SS TO_DATE()还有很多种日期格式, 可以参看 ORACLE DOC. 日期型字段转换成字符串函数TO_CHAR(‘2001-08-01’,’YYYY-MM-DD HH24:MI:SS’) 日期字段的数学运算公式有很大的不同。 MYSQL找到离当前时间7天用 DATE_FIELD_NAME > SUBDATE((NOW(),INTERVAL 7 DAY) ORACLE找到离当前时间7天用 DATE_FIELD_NAME >SYSDATE - 7;
6. 空字符的处理 MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。 按MYSQL的NOT NULL来定义ORACLE表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。
7. 字符串的模糊比较 MYSQL里用 字段名 like '%字符串%' ORACLE里也可以用 字段名 like '%字符串%' 但这种方法不能使用索引, 速度不快 用字符串比较函数 instr(字段名,'字符串')>0 会得到更精确的查找结果 8. 程序和函数里,操作数据库的工作完成后请注意结果集和指针的释放。
分享到:
相关推荐
总的来说,将MySQL数据库转换为Oracle涉及到多个步骤,包括数据备份、导出、格式转换、导入和测试。使用合适的工具可以简化这一过程,但理解两者之间的差异和Oracle的最佳实践仍然是至关重要的。在实际操作中,应...
"Oracle数据库sql转换mysql数据库工具" 提供了解决这一问题的解决方案,允许用户将Oracle数据库中的SQL语句或数据结构转换为MySQL兼容的格式。 在数据库迁移过程中,这样的工具至关重要,因为它可以简化工作流程,...
虽然是demo版本,但可以转换一些字段不是很长的数据库表。 MySQL Migration Toolkit v2.3 数据库转换工具 ...MySQL-to-Oracle MySQL数据库转Oracle数据库 Oracle-to-MySQL Oracle数据库转MySQL数据库 数据库表转换工具
3. **触发器和存储过程**:如果MySQL数据库中包含触发器和存储过程,迁移工具需要能处理这些复杂逻辑,确保在Oracle中重建。 4. **权限和角色**:用户权限和角色在数据库迁移中同样重要。工具需要考虑如何将MySQL的...
Oracle数据库表转换为Mysql是指将Oracle数据库中的表结构转换为Mysql数据库中的表结构,以便在Mysql数据库中使用。这种转换可以使用PowerDesigner工具来实现。 一、Oracle数据库表结构导出 首先,需要使用Oracle...
MySQL到Oracle数据库转换工具是一种专门用于将数据从MySQL数据库系统迁移至Oracle数据库系统的软件解决方案。在数据库管理系统领域,这样的工具非常关键,因为不同的DBMS(数据库管理系统)可能有着不同的数据结构、...
Oracle到MySQL转换工具是一种专门设计用于帮助用户将Oracle数据库中的数据和结构迁移至MySQL数据库的应用程序。这个过程通常称为数据库迁移或数据迁移,是企业在更换数据库系统时常常面临的需求。以下是一些关于...
### 把MySQL数据库中的数据导入到Oracle数据库中的详细步骤与注意事项 #### 一、环境配置与需求概述 本文档旨在详细介绍如何将MySQL数据库中的数据迁移到Oracle数据库中,包括具体的环境配置、迁移流程以及可能...
MySQL到Oracle转换是一个常见的任务,特别是在企业级应用迁移或整合过程中。这个工具专注于将MySQL的数据库结构和数据转换为Oracle数据库兼容的格式。下面将详细解释这个过程涉及的知识点。 1. **SQL语言的差异**:...
综上所述,"Mysql数据库转oracle工具"是解决数据库迁移问题的有效途径,它降低了技术难度,提高了迁移效率。用户在使用时,应充分理解数据类型映射、字符集兼容等问题,以确保迁移的成功和后续系统的稳定运行。
标题中的“mysql和oracle数据库之间的转换工具”指的是能够帮助用户将MySQL数据库的数据高效、准确地迁移到Oracle数据库的软件。这样的工具通常提供图形化界面,使得操作更为直观,无需深入理解底层的SQL语法和数据...
标题中的“基于java的数据库脚本转换工具(mysql->oracle)”揭示了这是一个利用Java编程语言开发的实用程序,主要用于将MySQL数据库的脚本转换为适用于Oracle数据库的格式。这样的工具在数据迁移、系统升级或者多...
Convert Mysql to Oracle是一个免费的数据库转换工具,实现快速安全地将Mysql数据库导入为ORACLE数据库。 Convert Mysql to Oracle 功能特点 可以转换所有的Mysql字段类型 支持所有版本的Mysql 可以将数据合并到...
oracle数据库转成mysql数据库的免费软件
总的来说,Oracle SQL Access MySQL数据库转换工具是解决多数据库平台之间数据迁移问题的有效解决方案。通过使用这样的工具,用户可以方便地在不同的数据库系统之间共享和转移数据,为业务流程的顺畅运行提供有力的...
MySQL到Oracle的数据迁移是一项常见的任务,特别是在企业级应用中,可能因为业务需求或者系统升级而需要将数据从MySQL迁移到Oracle。在这个过程中,我们需要了解两者之间的差异,以及如何有效地进行数据转换和导入。...
数据库转换工具,可实现oracle,mysql,sqlserver,sybase,db2相互转换
这款工具通常适用于那些需要从Oracle数据库迁移到MySQL数据库的企业或个人,可以有效地降低迁移过程中的复杂性和工作量。 首先,我们来详细了解Oracle数据库。Oracle是全球领先的商业级关系型数据库管理系统,广泛...