1.ETL概念:
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
E:代表数据抽取
T:代表转换加工
L:装载,中间操作,形式包括文件、表。
2.ETL工具:
- datax
- Oracle SQLLoader
- Informatica
DataX: 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。
参考:https://blog.csdn.net/qq_39188747/article/details/102577017
https://zhuanlan.zhihu.com/p/81817787
Sql Loader: 一个批量工具,将文件数据导入到数据库。可以导入一个表或者多个表,甚至可以在导入时修改数据。
参考:https://www.cnblogs.com/lideng/p/3739380.html
https://blog.csdn.net/dbanote/article/details/9153895
Informatica:是收费的,详细可以bd一下。
datax是开源的,属于阿里巴巴,Oracle SQLLoader和Informatica两者是收费的,但是也有不同之处。SQLLoader是属于公司内部,是属于oracle组件的,Informatica是开发它的公司所开发的一款产品,给别的公司提供服务的,Informatica是图形化的,他们三者形式上都是底层shell脚本编写的,然后通过此去执行核心SQL。
新核心(来源) ---->ods(数据仓库) -------->中间业务 --->仓库 (目标层)
ods去新核心抽取数据或者新核心推送数据到ods,ods是纯纯的仓库,中间业务是通过kafka和别的工具会进行监听,如果有
数据变化会就会进行数据推送,定时的,
讲一下sqlloader的使用流程,结合实例案例,ods去新核心抽取数据,基础是他们需要约定好一定的规范,再经过中间操作推送到新华
ETL工具 E:数据的抽取 T:数据的转换加工 L:数据的装载---->中间操作,生成对应文件 ETL工具有阿里开源的DataX,我司自用的sqlloader(oracle的组件),外司开发的infor, 3者都是用shell脚本的形式驱动sql来完成数据操作的,infor提供了可视化界面 新核心行协数据转换为例 新核心-------》ODS------》中间业务-------->目标数据库 新核心为数据来源,ODS为纯数据仓库,两者按照一定的规范(相互约定好)推送或查询抽取数据。 中间业务将ODS传递来的数据进行处理,最后存入目标数据库 中间业务中也会有相应工具监听新核心,将有变化的数据放入kafka仓库中,再进行更新操作(删除与插入)到目标数据库。 详细的流程 分为上部与下部 上部: 提数-------》DOS-----------》转换加工-----------》推送 首先时将类似新核心等等平台数据推送到ODS中,在通过操作sqlloader填写对应所有表与字段信息的视图,在转换加工成文件,其中文件有2个,按不同日期划分,dat数据文件与dir控制文件,先生成数据文件在生成控制文件,控制文件是对数据文件的描述,比如总数据大小,数据行数,文件名称等。最后将这成对文件打包发送到SFTP服务器上 下部: 下载---------》日期--------》解析--------》临时表(B)--------》目标表(A) 首先从SFTP服务器上下载对应日期的文件,先找到控制文件,解析处数据文件名称,再去找到数据文件,再根据数据文件通过shell脚本生成临时表(与目标表一致),临时表是为了便于操作数据,最后存入目标表。 下载到临时表都是可用shell脚本实现,shell脚本结构是一个总提纲式的脚本,统合所有单个操作的shell脚本,然后按顺序挨个执行。 报送情况 来源表-------------》目标表 1.一对一关系时,此情况不需要额外操作,称为单抽或直抽 2.来源表中不仅全部包含目标表的全部字段还有其他,直接配置需要的字段即可 3.多对一时,有两种情况,来源表中没有的字段其他表也没有,就需要在报送过程中补全这些字段;另一种是多出来的字段是其他的来源表中的,这就需要联查出来,在报送。