mysql etl连两个源_【Kettle】Excel/MySQL多数据源文件解决方案

本文介绍了如何使用Kettle进行Excel和MySQL数据源的ETL整合。主要内容包括:1) 数据类型同步策略;2) 合并表时添加辅助字段如ETL时间、数据更新时间和数据来源;3) 在MySQL中创建目标表并调整数据类型;4) Kettle中修改Excel数据类型以匹配数据库格式;5) 数据去重和排序;6) 添加数据来源标识字段;7) 使用Table Output步骤将数据写入目标表。
摘要由CSDN通过智能技术生成

3035f18df4df2efb908d5404e8b797b3.png

看完这章你会学习到以下内容:

1. 尤其在用Excel或者其他非数据库文件传入数据时候,如何做到数据类型同步?

2. 两张表的合并要添加那些字段作为辅助说明?

2.1 ETL时间,数据更新时间 以及 Source_data 数据来源

数据源一 : Excel表格

一共有以下几个字段

79ac932c79d35197c8b053d9668b3d33.png

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

1fc2c72c1e904480c04e5660b2ac3002.png

第一步: 首先在目标数据库里建立目标表。

因此,我们要在MySQL上面找到相应的创建表和插入语句,操作与Oracle数据库相似。

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

d56ffb5f71fefaf343b8eed63f1a20f6.png

1ffb4e5d17a7409386abb653f31d9d9e.png

在打开来自MySQL数据库的创建表语句

修改无用字段,并更改数据类型。

4495661ae39a53dd190e4860d3b2f763.png

第二步:修改结果如下,全部转化成Varchar2和Number 数据类型。

注意:尽量将所属字段的长度设置大一倍,因为不同的数据库类型字符类型和存储不一,如果少了,则读取不成功。

c4348bff2eb4c393b02f7fab5aad60ed.png

这个就是以MySQL数据库创建表的数据类型,类似其他数据来源,CSV/Excel等可能格式存在不统一,因此,这里**建议统一按照数据库格式

第三步:在Kettle的Excel输入空间上,就直接更改数据类型!

**长度和精度就按照获取来自头部数据类型后,默认便可。

39379e770696028edd0ebf39f581122b.png

然后字段的名字,或许里面可以能一一对应(英文对照中文)

但是,Excel表里面的所有字段名字都转换为跟数据库的一致!

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

0617693d5bf1fcd8b8418a0d8162ea12.png

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

因此 先排序后去重!

08b7ec5a806b52613ee6527ac93a3810.png

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

2bd0ac441267aa4b687d2e5f71c128a3.png

第五步:然后两个数据源都增加一个默认字段,数据来源Source_DATA.

请注意:这个名称一定要和最后在ODS层建立的字段名字一致(可以忽略大小写),要不然会出现SOURCE_DATA无法识别。

9f711af994fc3a7df2f6d37f4237d126.png

e163c1e018efdfdb9d91f485a4c9d4ad.png

第六步:因为两张表都是上下形式叠加,就像SQL语句里面的Union all。

数据来源要指定紧接上一步的操作,而不是刚输入进来的数据源。

81c4ed055d051ec6381ccfdfd24b423e.png

最后一步,设置T,表输出。

这里就包括,输出到那一个数据库下那一张表(前提已经要建立好)。

注意: 第一次输入的话,就勾选裁剪表

(确保在输入进去前,先清空所有的数据)

然后选择获取字段,将多余的标志字段删去,原本用作标识共同连接的

32f9400d471ecef91a0bc64ad39a5634.png

把表字段和流字段下的d,用del键删除即可。

之所以要删除原因:因为在ODS层建立的目标表并没有建立这一列。

f9f53aca2b36d30a92f64e81d16fb988.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值