引言
在上一篇文章中,我们主要讲解的是:一个综合小案例(从文本文件\excel\csv,这3类文件中读取数据。然后通过表输出组件,把数据最终保存在指定的mysql库表中)。
在本篇文章中,我们要用前面讲的是:一个综合小安全(把oracle数据库中的数据,迁移到mysql库中)。这种异库迁移数据的需求,太正常了。本文中我只拿单表的数据来演示,让大家有个感觉。
如果在生产中,整体库的迁移的话,你需要考虑的事就多了,我简单列出几个,比如:迁移规划、业务梳理、方案选型、资源评估、应用评估、迁移方案(全量、增量等)、上线交割(各种测试)、如果失败要回退。
其实有个DBA的话,你就会舒服太多了,上面那些事就不用你考虑了。因为我早些年,就是做DBA的。想想我和运维同事,一起在夜黑风高的夜晚,一起通宵加班上线的日子,想想就头疼!!!
迁移原理
所谓的数据迁移,简单来说:就是从数据源端读取数据,把读出的数据写入到目标端。
这样看来的话,只要能和目标\源数据库连接成功,就可以操作了。实现的手段太多了:jdbc纯代码实现、第3方数据库开发工具(navicat、DBeaver等),ETL(kettle、informatic powercenter)
本套文章主要讲的是kettle技术点,所以下面我们就使用kettle来模拟实现一下吧。
转换
转换(transaformation)是ETL解决方案中最主要的部分,它处理抽取、转换、加载各种对数据行的操作。
创建转换
我们要做的ETL操作,全是在转换中设计的,所以我们要先创建一个转换。
保存转换
给你新建的转换,起个名字,并保存
实战演示
我们要演示从oracle库中读取数据,然后通过kettle组件,将数据写入到mysql的库表中。整体效果如下图:
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;
查询数据
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;
操作截图
c、创建转换
d、创建oracle的DB连接
e、创建mysql的DB连接
f、表输入设置
预览数据
g、表输出设置
h、运行转换
i、验证mysql库表数据
兄弟们,看到mysql库表中的数据,是不是感觉非常爽,感觉之前那些组件没有白学,今天终于用上一些了。
其实,我只是随便编了一个案例,大家工作中还会遇到各种的案例。只要兄弟们把常用组件的基础打好,遇到各种案例就像拼积木一样,把组件组合在一起解决问题,就可以了。
结束语
本篇文章主要讲解了:一个综合小案例(从oracle库中读取数据,然后通过kettle组件,将数据写入到mysql的库表中)。
兄弟们,其实想和作是有一段距离的,你想着想着就没有了,可是你做着做着,它就落地了。
啥都别说了,兄弟们后面跟着我干就完了,我们依然掰开揉碎的方式去说。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!!