五陵年少金市东,银鞍白马渡春风。这篇文章主要讲述kettle庖丁解牛第27篇之多种数据源统一输出相关的知识,希望能为你提供帮助。
引言在上一篇文章中,我们主要讲解的是:删除组件的各种详细设置,最后实战演示了,从excel文件中读取数据,然后通过删除组件,把excel中的数据和mysql库表中的数据通过指定进行关联,能关联上的,就进行删除操作。
在本篇文章中,我们要用前面讲的输入\\输出组件,汇总的讲一个小案例了。
数据的输入端,它是随便变化的(文本、excel、xml、json、表)。数据的输出端,它也是随便变化的(文本、excel、xml、json、表)。数据从输入端经过处理,最终数据通过输出端写出到目标位置保存,数据在kettle中流转罢了。这样看来kettle的输入组件和输出组件,非常符合开发的松耦合标准。
转换转换(transaformation)是ETL解决方案中最主要的部分,它处理抽取、转换、加载各种对数据行的操作。
创建转换
我们要做的ETL操作,全是在转换中设计的,所以我们要先创建一个转换。
保存转换
给你新建的转换,起个名字,并保存
实战演示我们在日常工作中,数据来源也是非常多元化的。此处我们模拟一下,从文本文件\\excel\\csv,这3类文件中读取数据。然后通过表输出组件,把数据最终保存在指定的mysql库表中。转换整体设置效果如下图:
a、创建测试数据环境
操作语句
创建bigdata库
mysql>
create database bigdata;
指定使用bigdata库
mysql>
use bigdata;
创建test表
mysql>
create table test(id int,name char(50),age int);
查询test表中的数据(无数据)
mysql>
select * from test;
操作截图
b、创建txt文件
我在D盘下,创建一个txt文件,命名为test。第1行是文件表头,从第2行开始是数据。此文件有3列数据,每1列通过","分割。我使用的分割符,它是英文的。你要注意你的分割符,它是中文的?还是英文的?
c、创建excle文件
我在D盘下,创建一个xlsx文件,命名为bigdata。在sheet1中设计数据,第1行是文件表头,从第2行开始是数据,此文件有3列数据.。
d、创建csv文件
我在D盘下,创建一个csv文件,命名为testcsv。第1行是文件表头,从第2行开始是数据,此文件有3列数据.。
e、文本文件输入设置
【kettle庖丁解牛第27篇之多种数据源统一输出】
预览数据
f、Excel输入设置
预览数据
g、CSV文件输入设置
预览数据
h、追加流设置
此组件的功能非常简单,把2个数据流整合在一起,按指定的前后顺序一起输出。
i、字段选择设置
这个组件常常用来:选择字段、重命名字段、指定字段的长度或者精度。此处我们使用它,修改元数据字段的类型。
如果不使用此组件,在CSV文件输入组件和追加流关联时,就会报错:youre mixing rows with different storage types。
j、表输出设置
k、运行转换
l、验证结果表中数据
兄弟们,看到mysql库表中的数据,是不是感觉非常爽,感觉之前那些组件没有白学,今天终于用上一些了。
其实,我只是随便编了一个案例,大家工作中还会遇到各种的案例。只要兄弟们把常用组件的基础打好,遇到各种案例就像拼积木一样,把组件组合在一起解决问题,就可以了。
结束语本篇文章主要讲解了:一个综合小案例(从文本文件\\excel\\csv,这3类文件中读取数据。然后通过表输出组件,把数据最终保存在指定的mysql库表中)。
兄弟们,其实想和作是有一段距离的,你想着想着就没有了,可是你做着做着,它就落地了。
啥都别说了,兄弟们后面跟着我干就完了,我们依然掰开揉碎的方式去说。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!!
推荐阅读
- 杂谈java SPI机制
- jvm专题 - 体系结构
- 从if...else...到责任链再到composeAOP,顺带把传参解决了~
- 干货!!基于Spark Graph的社交关系图谱项目实战
- 网络协议之:memcached text protocol详解
- Android开发中常见的设计模式——观察者模式
- 利用 Android 系统原生 API 实现分享功能
- Appium公共方法封装
- Android-低功耗蓝牙(BLE)-客户端(主机/中心设备)和服务端(从机/外围设备)