mysql去重_【Kettle 多文件】Excel/MySQL文件传入解决方案

看完这章你会学习到以下内容:
1. 尤其在用Excel或者其他非数据库文件传入数据时候,如何做到数据类型同步?
2. 两张表的合并要添加那些字段作为辅助说明?
2.1 ETL时间,数据更新时间 以及 Source_data 数据来源


数据源一 : Excel表格
一共有以下几个字段

d0da1cfe147c22fa220d2b1415cd1312.png


数据源二: MySQL数据 - srcsales数据库的sales_data表

c255f9a8185675856d36a13516b6623d.png


第一步: 首先在目标数据库里建立目标表。
因此,我们要在MySQL上面找到相应的创建表和插入语句,操作与Oracle数据库相似。

选中表然后右击,转储SQL文件的仅数据和结构,导出SQL文件到ORACLE数据库

eb039832d56a27c93067dbde4b6d3374.png

0c582e36d04bd3f07a0a2f011c3ed6d3.png


在打开来自MySQL数据库的创建表语句,修改无用字段,并更改数据类型

51dfa2b291da0cac0a8a2d68a03673b5.png


第二步:修改结果如下,全部转化成Varchar2和Number 数据类型。
注意:尽量将所属字段的长度设置大一倍,因为不同的数据库类型字符类型和存储不一,如果少了,则读取不成功。

0c6bbb10660d481f20139b259f9f34a5.png


这个就是以MySQL数据库创建表的数据类型,类似其他数据来源,CSV/Excel等可能格式存在不统一,因此,这里建议统一按照数据库格式
第三步:在Kettle的Excel输入空间上,就直接更改数据类型!
长度和精度就按照获取来自头部数据类型后,默认便可。

bd992e35024faa92f9f0826f994d27b4.png


然后字段的名字,或许里面可以能一一对应(英文对照中文)
但是,Excel表里面的所有字段名字都转换为跟数据库的一致!

目的:就是在最后表输出的时候,能自动地匹配得到相应的字段,而不需要手动映射。

36e9825ed76328e3457cb21e1336e467.png


第四步:两个数据源都需要去重,但前提必须要排序。
因此 先排序后去重!

2fcc640d334f73184f2e483021aa2fb5.png

如果不排序,则会出现以下提示或者报错信息。

590b3478c4ad2a67d3bd6153a91e1c04.png

第五步:然后两个数据源都增加一个默认字段,数据来源Source_DATA.请注意:这个名称一定要和最后在ODS层建立的字段名字一致(可以忽略大小写),要不然会出现SOURCE_DATA无法识别。

655aa988ab745acb91027201e2fd57b9.png

9548c1aa4500084ae992c10551b9774c.png

第六步:因为两张表都是上下形式叠加的,就像SQL语句里面的Union all。
数据来源要指定紧接上一步的操作,而不是刚输入进来的数据源

40dab6b5bfd13a136c3090064784fe44.png


最后一步,设置T,表输出。
这里就包括,输出到那一个数据库下那一张表(前提已经要建立好)。
注意: 第一次输入的话,就勾选裁剪表(确保在输入进去前,先清空所有的数据)
然后选择获取字段,将多余的标志字段删去,原本用作标识共同连接的

133a515217274e951c1e10fed5a68e4c.png

把表字段和流字段下的d,用del键删除即可。
之所以要删除原因:因为在ODS层建立的目标表并没有建立这一列。

8337c82a83edc8ae884b77f758ffb365.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值