首页 > 数据库 > MySQL > KETTLE之-oracle到mysql的数据迁移
written by Jane.Hoo
1、背景说明
t_xx_open_info是在oracle上的表,由于应用需求需要迁至mysql数据库。t_score_open_info的字段有部分变更(id_type,id_no两个字段不需要导入目标端)。t_score_open_info有16万左右的数据,需要全表导入。
Oracle上表结构描述如下sql:
create table T_xx_OPEN_INFO
(
id NUMBER not null,
phone_no VARCHAR2(20) not null,
id_type VARCHAR2(2),
id_no VARCHAR2(40),
open_time DATE not null,
open_status VARCHAR2(2) not null,
open_channel VARCHAR2(2),
created_at DATE not null,
created_by VARCHAR2(20) not null,
updated_at DATE not null,
updated_by VARCHAR2(20) not null
)tablespace TBS_xx_01
迁移前请保证以下环境准备妥当:
1、 保证kettle工具至源端和目标端的网络是无障碍的。
2、 kettle工具配置完毕,能够完成与oracle、mysql数据库的连接(注意,通过jdbc方式连接oracle、mysql数据库时需要相应的jdbc驱动包)。
3、 对应数据库的账号密码。对应的账号需要有数据库中要迁移表的读写权限(如果目标端的表还未建立则还需要相应的建表权限)。
4、 停机窗口,迁移时,源端表需要停止写操作,所以需要一定时间的停机窗口,测试了单表16万数据的迁移,需要5分钟的停机窗口。
在目标mysql端建立两张表
CREATE TABLE ` T_XX_OPEN_INFO ` (
`id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT COMMENT '序号',
`phone_no` varchar(20) NOT NULL COMMENT '手机号码',
`open_time` datetime NOT NULL COMMENT '开通时间',
`open_status` varchar(2) NOT NULL DEFAULT '' COMMENT '开通状态',
`open_channel` varchar(2) NOT NULL DEFAULT '0' COMMENT '开通渠道',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`created_by` varchar(20) NOT NULL DEFAULT '' COMMENT '创建人',
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`updated_by` varchar(20) NOT NULL DEFAULT '' COMMENT '更新人',
PRIMARY KEY (`id`),
KEY `idx_phone_no` (`phone_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


输入数据库配置:






按住shift键,从源端划向目标端即可建立连接

点击红色按钮开始导数过程,查看日志,看是否有异常出现


查看目标端的数据及数据量
Select count(*) from t_xx_open_info;
Select * from t_xx_open_info limit 1,10;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30109892/viewspace-1826963/ ,如需转载,请注明出处,否则将追究法律责任。