下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

你需要知道的7个MySQL转换Oracle事项

作者:课课家     来源: http://www.kokojia.com点击数:954发布时间: 2019-02-28 10:46:47

标签: 考试认证等级考试MySQL

软考,您想通过吗?一次通过才是硬道理

  如今现在越来越多的企业公司都通过使用Oracle数据库来管理数据,但是以前存储在MySQL数据库的数据不可能说都弃掉,为此就需要进行数据库的移植操作。那么到底如何把MySQL数据库的数据移植到Oracle数据库中呢?为此在本篇文章中课课家笔者就为大家详细下具体的实现方法和步骤。

你需要知道的7个MySQL转换Oracle事项_考试认证_等级考试_MySQL_课课家

 


 

  自动增长的数据类型处理

  我们知道MySQL有自动增长的数据类型,在插入记录时我们不用操作此字段就会自动获得数据值。而Oracle没有自动增长的数据类型,我们需要建立一个自动增长的序列号,在插入记录时要把序列号的下一个值赋于此字段。

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

  在这其中最大的值按字段的长度来定,如果定义的自动增长的序列号NUMBER(6),最大值为999999 INSERT语句插入这个字段值为:序列号的名称.NEXTVAL

  


 

  单引号的处理

  通常MySQL里可以用双引号包起字符串,而Oracle里只可以用单引号包起字符串。所以我们在插入和修改字符串前必须做单引号的替换,把所有出现的一个单引号替换成两个单引号。虽然说操作可能会比较繁琐,但是如果不这样做是无法完成将MySQL数据转换到Oracle数据库中的。

  


 

  翻页的SQL语句的处理

  MySQL处理翻页的SQL语句比较简单,通常用LIMIT开始位置,记录个数;在php里我们还可以用SEEK定位到结果集的位置。Oracle处理翻页的SQL语句就比较繁琐了,每个结果集只有一个ROWNUM字段标明它的位置,并且只能用ROWNUM<100而不能用ROWNUM>80。以下是经过分析后较好的两种Oracle翻页SQL语句(ID是唯一关键字的字段名):

  【语句一】

  SELECTID,[FIELD_NAME,...]FROMTABLE_NAMEWHERE    IDIN(SELECTIDFROM(SELECTROWNUMASNUMROW,    IDFROMTABLE_NAMEWHERE条件1ORDERBY条件2)    WHERENUMROW>80ANDNUMROW<100)ORDERBY条件3;

  【语句二】

  SELECT*FROM((SELECTROWNUMASNUMROW,    c.*from(select[FIELD_NAME,...]    FROMTABLE_NAMEWHERE条件1ORDERBY条件2)c)    WHERENUMROW>80ANDNUMROW<100)ORDERBY条件3;

  


 

  长字符串的处理

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

  


 

  日期字段的处理

  一般来说MySQL日期字段分DATE和TIME两种,Oracle日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间为SYSDATE,精确到秒或者用字符串转换成日期型函数TO_DATE(‘2001-08-01','YYYY-MM-DD')年-月-日24小时:分钟:秒的格式YYYY-MM-DDHH24:MI:SSTO_DATE()

  日期型字段转换成字符串函数TO_CHAR(‘2001-08-01','YYYY-MM-DDHH24:MI:SS')日期字段的数学运算公式有很大的不同:

  ● MySQL找到离当前时间7天用DATE_FIELD_NAME>SUBDATE((NOW(),INTERVAL7DAY)

  ● Oracle找到离当前时间7天用DATE_FIELD_NAME>SYSDATE–7;

  


 

  空字符的处理

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

  


 

  字符串的模糊比较

  MySQL里用字段名likeOracle里也可以用字段名like但这种方法不能使用索引,速度不快用字符串比较函数instr(字段名,字符串)>0会得到更精确的查找结果8.程序和函数里,操作数据库的工作完成后需要大家注意的是结果集和指针的释放。

  


 

  以上就是7个MySQL转换Oracle注意事项的介绍,相信大家对此都有一个基本的了解了吧。那么本次的讲解到此就暂告一段落,如果以后有什么相关的内容继续进行补充或者修改的话,笔者会在此继续进行相关的内容的补充或者修改的工作,同时也欢迎大家对本次的讲解提出自己的建议和补充。最后笔者希望本次的讲解对大家学习MySQL能够起到一定的帮助作用!

赞(0)
踩(0)
分享到:
推荐查看
华为认证网络工程师 HCIE直播课视频教程