在我们开发的过程中,经常碰到多个系统之间需要相互抽取数据的问题,以往我们可以通过写Webservices接口,或者FTP共享来完成,但是这样会存在工作量大,不便于维护,性能不高的问题。今天介绍一款常用的数据抽取工具—-Kettle。
Kettle是一款国外开源的ETL工具,纯Java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。下面我们使用一个Demo程序介绍下其常用组件。
有一个社交类的产品,进行了一次架构变更,数据库表结构模型发生变化了,从老系统升级到新系统时,要把老系统中数据迁移到新系统的数据库里。
下面我们拿群组表数据做个Demo演示数据迁移过程。
1. 现状:
老系统
群组表:group
群组成员表:user_group
新系统
群组表:group_分表,
群组成员表:group_members_分表
我的群组表:mygroups_分表
2. 步骤逻辑梳理
old:老系统
new:新系统
查询群组(old)->创建群组,群组成员,我的群组分表(new)->插入群组数据(new)->插入群组成员数据(new)
1.下载工具
下载完成后,解压,打开Spoon.bat启动
2.查询群组(old)- 表输入
当我们需要查询表数据时,需要用到表输入组件
新建转换,选择 输入->表输入,双击 到 转换画板,打开输入以下信息:
步骤名称:步骤名称标识,不能重复
数据库连接: 要连接的数据库,如果没有,新建一个
SQL语句:输入查询SQL语句
下图是我写的
这样,我们查询群组表就写好了
3.创建群组分表(new) - SQL脚本
当我们要执行SQL时,可以使用SQL脚本组件
选择 脚本-> 执行SQL脚本,双击 到 转换画板,打开输入要执行的SQL语句,如下图:
这里传入了game_id作为分表的参数,’tita_group_?’会被替换成’tita_group_gameid值’
记得选择 “执行每一行”
4.字段值转换 - 值映射组件
由于群组类型字段type发生了变化,原来是1,2,新系统是9,10,所以我要进行值得转换,使用值映射组件
5.插入群组数据(new) - 表输出
需要插入表数据时,使用 表输出组件
选择 输出->表输出,双击,打开,输入 ”数据库连接“,”目标表“,选择 ”指定数据库字段“,输入 ”数据库字段“ 映射,如下图:
”数据库字段“ 映射,表字段:插入表字段,流字段:”上一步“的输出字段,这样运行迁移时,会将数据插入到对应的表字段里
6.点击运行按钮
,运行转换,看到下图,表示转换完成7.群组成员,我的群组数据迁移跟上面步骤类似,不再重复说明,最终完成整个转换如下图:
总之,学习的过程需要不断实践和反复摸索,这只是Kettle一小部分知识,大家保持一颗学习的热情,就不怕路远。
顶 1 踩 0
我的同类文章
猜你在找
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
个人资料
JaCman
积分:1278
我的微信公众号
长期为您推荐优秀博文、开源项目、视频等,进入还有好玩的等着你,欢迎扫一扫。
文章搜索
文章分类
文章存档