网站数据从ORACLE到MYSQL的兼容迁移
世界工厂网线上生态学院 网站数据从ORACLE到MYSQL的兼容迁移在网站升级改版后,如果想要降低网站运行成本,由原企业级数据库ORACLE变更为较为小型的MYSQL,则需要进行数据迁移,那么如何保证迁移过程高效准确呢?一、oracle数据库与 MySQL数据库介绍ORACLE数据库系统是一组以分布式数据库为核心的商业软件产品,具有完整的数据管理功能、完备关系的产品、分布式处理功能,支持数据仓库,是目前最流行的B/S体系结构的数据库之一。逻辑结构由逻辑存储结构(表空间,段,范围,块)和逻辑数据结构(表、视图、序列、存储过程、同义词、索引、簇和数据库链等)组成,而其中的模式对象(逻辑数据结构)和关系形成了数据库的关系设计。但是有个很大缺点:商业、闭源;MySQL是一个关系型数据库管理系统,与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,MySQL虽有自身不足之处,但是对于个人使用者及中小型企业而言,MySQL提供的功能已经绰绰有余,而且MySQL开源,所以就有了现在的Oracle to MySQL。二、迁移过程中可能碰到的问题1.二者对大小写区分不同ORACLE数据库具有较好的包容度,对大小写不敏感,支持网页文件关于insert into Sitearticle()代码对于SiteArticle表的插入新记录操作;而MYSQL数据库对大小写敏感,只支持insert into SiteArticle()代码对于SiteArticle表的插入新记录操作。解决办法是仔细查看网页源代码,对数据库操作的所有语句的数据表名、库名、字段名等的字符大小写,保持与数据库中创建名称的大小写一致。2.二者个别数据类型定义不同在mysql中没有像oracle中的varchar2、number,mysql有与之对应的varchar、numeric,当然在oracle中没有mysql的time类型。ORACLE中对时间的定义类型只有Date一种,而这种定义类型的格式包括年月日和时间;而在MYSQL中对时间的定义类型包含Date、Time、Datetime三种,在MYSQL中对于Date类型的定义仅仅包含年月日而不包含时间。解决方法是把MYSQL数据库表中创建的字段类型由原来的Date改为Datetime,再重新进行这类数据的导入。3.二者对保留字的要求不同在ORACLE数据库中对保留字的态度是较为宽容的,可以表名和字段名称均可以使用保留字;而MYSQL数据库规定保留字是不可以作为表名和字段名的。在网站的数据库Sitearticle表中的其中一个字段名为show,属于保留字,因此同样建立在MYSQL数据库后,插入新记录报语法错误。解决这个问题,需要在网页代码中将代码语句中的关于Sitearticle表的show字段名用符号(即1按键前面的按键输入的符号)引起来以区别。如果是字段名还有另 外一种方法tablename.字段名。像这样:insert into tablename (id, interval) value(.4.自动增长类型的区别。Oracle有sequence,mysql中没有,但有auto_increment属性。解决办法是把Oracle中sequence转换成使用auto_increment属性,某些情况可能还有一种办法可以解决问题,新建一个独立的表用来专门记录自动增长型的数据。5.索引长度限制的区别。从MySQL 4.1.2开始,MyISAM和InnoDB表索引长度支持1000字节,也就是说索引字段的长度不能超过1000字节,如果超过会报错。如果是UTF-8编码,相当于333个字符的长度(因为UTF8一个字符占3个字节)。Oracle的索引长度限制比mysql要宽松得多。总结:在迁移时为了数据库的兼容性应重视遵守标准用法,保留字和数据库大小写敏感问题。世界工厂网线上生态学院:制造企业开展线上业务的加油站