Welcome 微信登录

首页 / 网页编程 / PHP / PHP将数据从Oracle向Mysql数据迁移实例

PHP将数据从Oracle向Mysql数据迁移实例2011-09-25 blogspot John Meng为什么要迁移?

首先从运营成本考虑,用Mysql可以节约不少的费用。另一方面,Mysql的稳定性及功能不断地提高与 增强,基本上可以满足客户的需求,如支持多 节点部署,数据分区等。还有就是Mysql使用方便,比 Oracle简单易用。故客户就要求将已有的Oracle数据表与内容迁移到Mysql来。

为什么要自己写脚本?

迁移的表与数据都蛮多的,有几百张表。因此手工完成不太方便。也尝试了一些免费的迁移工具, 如:MySQLMigrationTool等,发现转移 的字段类型不太符合要求(可能是原来的Oracle表设计得不太好), 会导致数据不太完整,觉得不是太可靠,所以决定自己写迁移脚本放心一些,有不符合要求的也可立即调 整,所以就开始吧。

所用到的技术支持

1.php5

2.php oci8

3.mysql 5.1

迁移表结构

获取schema所有表

用以下语句可以从Oracle中获得schema中所有的表名

SELECT table_name FROM user_tables

然后可以遍历所有表向mysql进行表结构的创建与数据的迁移工作。

获取单个表的所有字段与类型

用以下语句可以从oracle中获得单个表的所有字段与类型

SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE, DATA_DEFAULT

FROM USER_TAB_COLUMNS WHERE TABLE_NAME = UPPER("{$table_name}") ORDER BY column_id ASC

这样可以得知表字段的名称,类型,长度,是否允许为空,默认值。因为oracle与mysql的字段类型并 不完全兼容,故需要建立字段类型的对应关系表。

OracleMysql
number(<11)>int
number(>11)bigint
varcharvarchar
varchar2(<255)>varchar
varchar2(>255)text
clobtext
datedate