引言

在上一篇文章中,我们主要讲解的是:一个综合小案例(从文本文件\excel\csv,这3类文件中读取数据。然后通过表输出组件,把数据最终保存在指定的mysql库表中)。

在本篇文章中,我们要用前面讲的是:一个综合小安全(把oracle数据库中的数据,迁移到mysql库中)。这种异库迁移数据的需求,太正常了。本文中我只拿单表的数据来演示,让大家有个感觉。

如果在生产中,整体库的迁移的话,你需要考虑的事就多了,我简单列出几个,比如:迁移规划、业务梳理、方案选型、资源评估、应用评估、迁移方案(全量、增量等)、上线交割(各种测试)、如果失败要回退。

其实有个DBA的话,你就会舒服太多了,上面那些事就不用你考虑了。因为我早些年,就是做DBA的。想想我和运维同事,一起在夜黑风高的夜晚,一起通宵加班上线的日子,想想就头疼!!!

迁移原理

所谓的数据迁移,简单来说:就是从数据源端读取数据,把读出的数据写入到目标端。

这样看来的话,只要能和目标\源数据库连接成功,就可以操作了。实现的手段太多了:jdbc纯代码实现、第3方数据库开发工具(navicat、DBeaver等),ETL(kettle、informatic powercenter)

本套文章主要讲的是kettle技术点,所以下面我们就使用kettle来模拟实现一下吧。

转换

转换(transaformation)是ETL解决方案中最主要的部分,它处理抽取、转换、加载各种对数据行的操作。

创建转换

我们要做的ETL操作,全是在转换中设计的,所以我们要先创建一个转换。

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_etl

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_mysql_02

保存转换

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_kettle_03

给你新建的转换,起个名字,并保存

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_数据迁移_04

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_oracle_05

实战演示

我们要演示从oracle库中读取数据,然后通过kettle组件,将数据写入到mysql的库表中。整体效果如下图:

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_etl_06

a、oracle库准备表数据

创建表

create table DEPT

(

 DEPTNO NUMBER(2) not null,

 DNAME  VARCHAR2(14),

 LOC    VARCHAR2(13)

);

插入数据

insert into DEPT (DEPTNO, DNAME, LOC) values (10, 'ACCOUNTING', 'NEW YORK');

insert into DEPT (DEPTNO, DNAME, LOC) values (20, 'RESEARCH', 'DALLAS');

insert into DEPT (DEPTNO, DNAME, LOC) values (30, 'SALES', 'CHICAGO');

insert into DEPT (DEPTNO, DNAME, LOC) values (40, 'OPERATIONS', 'BOSTON');

commit;

查询数据

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_oracle_07

b、mysql库准备库表

操作语句

创建bigdata库

mysql> create database bigdata;

指定使用bigdata库

mysql> use bigdata;

创建test表

mysql>

create table test

(

 DEPTNO int,

 DNAME  VARCHAR(14),

 LOC    VARCHAR(13)

);

查询test表中的数据(无数据)

mysql> select * from test;

操作截图

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_kettle_08

c、创建转换

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_oracle_05

d、创建oracle的DB连接

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_mysql_10

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_etl_11

e、创建mysql的DB连接

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_oracle_12

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_kettle_13

f、表输入设置

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_etl_14

预览数据

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_kettle_15

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_kettle_16

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_etl_17

g、表输出设置

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_数据迁移_18

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_mysql_19

h、运行转换

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_oracle_20

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_oracle_21

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_oracle_22

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_数据迁移_23

i、验证mysql库表数据

kettle庖丁解牛第28篇之oracle数据迁移到mysql库_oracle_24

兄弟们,看到mysql库表中的数据,是不是感觉非常爽,感觉之前那些组件没有白学,今天终于用上一些了。

其实,我只是随便编了一个案例,大家工作中还会遇到各种的案例。只要兄弟们把常用组件的基础打好,遇到各种案例就像拼积木一样,把组件组合在一起解决问题,就可以了。

结束语

本篇文章主要讲解了:一个综合小案例(从oracle库中读取数据,然后通过kettle组件,将数据写入到mysql的库表中)。

兄弟们,其实想和作是有一段距离的,你想着想着就没有了,可是你做着做着,它就落地了。

啥都别说了,兄弟们后面跟着我干就完了,我们依然掰开揉碎的方式去说。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!!