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.多對一時,有兩種情況,來源表中沒有的字段其他表也沒有,就需要在報送過程中補全這些字段;另一種是多出來的字段是其他的來源表中的,這就需要聯查出來,在報送。