加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MYSQL教程数据从MySQL迁移到Oracle 需要注意什么

发布时间:2020-12-12 02:37:54 所属栏目:MySql教程 来源:网络整理
导读:《MYSQL教程数据从MySQL迁移到Oracle 需要注意什么》要点: 本文介绍了MYSQL教程数据从MySQL迁移到Oracle 需要注意什么,希望对您有用。如果有疑问,可以联系我们。 MYSQL教程 将数据从MySQL迁移到Oracle的注意事项 ,有如下几点 MYSQL教程 1.自动增长的数据

《MYSQL教程数据从MySQL迁移到Oracle 需要注意什么》要点:
本文介绍了MYSQL教程数据从MySQL迁移到Oracle 需要注意什么,希望对您有用。如果有疑问,可以联系我们。

MYSQL教程将数据从MySQL迁移到Oracle的注意事项,有如下几点

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

MYSQL教程MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值.ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段.
CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记)
INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;

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

MYSQL教程2. 单引号的处理

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

MYSQL教程3.长字符串的处理

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

MYSQL教程4. 翻页的SQL语句的处理

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

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

MYSQL教程
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;

MYSQL教程语句二:

MYSQL教程
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;

MYSQL教程5. 日期字段的处理

MYSQL教程MYSQL日期字段分DATE和TIME两种,ORACLE日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间SYSDATE,精确到秒.
日期字段的数学运算公式有很大的不同.
MYSQL找到离当前时间7天用:DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)
ORACLE找到离当前时间7天用:DATE_FIELD_NAME >SYSDATE - 7;

MYSQL教程6. 字符串的模糊比较

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

MYSQL教程7. 空字符的处理

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

MYSQL教程Oracle移植到mysql注意事项

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

MYSQL教程一、数据库环境从oracle移植到mysql碰到的问题.

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

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

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

MYSQL教程解决方法,是把mysql的数据库名和oracle的大小写保持一致,表名与应用程序中sql字符串中的表名保持
一致,如果应用程序中字段名用了双引号,那请把sql中的字段名大小写与双引号里的字符保持一致.如果
你的应用程序所引用的表名、字段没有统一大小写,那麻烦就大了.

MYSQL教程2、保留字的区别.

MYSQL教程像sql语言的函数名(如:inteval,show)等是保留字.Oracle中保留字是可以作为表名和字段名,并且不影响使用,但mysql中保留字是不能作为表名和字段名,如果使用会报语法错误.

MYSQL教程解决方法,把sql语句中的保留字用‘`'符号引起来,这个符号位于键盘的tab键上面;如果是字段名还有另外一种方法tablename.字段名.像这样:
insert into tablename (id,`interval`) value(…..

insert into tablename (id,tablename.inteval) value(…..

MYSQL教程3、自动增长类型的区别.

MYSQL教程Oracle有sequence,mysql中没有,但有auto_increment属性.

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

MYSQL教程4、数据类型的区别.
在mysql中没有像oracle中的varchar2、number,mysql有与之对应的varchar、numeric,当然在oracle中没有mysql的time类型.

MYSQL教程解决方法是替换.

MYSQL教程5、索引长度限制的区别.

MYSQL教程从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要宽松得多.

MYSQL教程解决方法:就不必要多说了,要么改索引的定义,要么改字段的定义长度.

MYSQL教程二、为了数据库的兼容性我们应该注意些什么.
数据库的兼容性应该是数据库设计应该重视的一个问题,因为有时候客户存在已经在用的数据库,并且
不希望同时维护两个数据库,这样的话兼容多种数据库还能成为产品的一个卖点.

MYSQL教程作到数据库的兼容性关键是遵守标准用法.

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

MYSQL教程如msyql的‘`'符号的用法,再比如,很多人有这种用法,在使用oracle开发的时候创建sequence,往表中插数据之前先SELECT seq.nextval FROM DUAL;,然后把查询得到的值作为value插入表中,这种用法没法适应没有sequence的数据库,每个数据库都有自
动增长型的用法,如果需要使用就应该完全地使用.
再举个例子,不同的数据库对分页查询作了扩展,postgresql有offset,limit,oracle就没有.

MYSQL教程2、保留字.

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

MYSQL教程3、避免数据库大小写敏感的问题.

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

MYSQL教程以上就是本文的全部内容,希望对大家的学习有所赞助,也希望大家多多支持编程之家PHP.

欢迎参与《MYSQL教程数据从MySQL迁移到Oracle 需要注意什么》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读