ETL-kettle數據轉換及組件使用詳解

目錄

一、txt文本轉換成excel

1、新建、轉換

2、構建流程圖

3、配置數據流圖中的各個組件

3.1、配置文件文本輸入組件

?3.2、 配置Excel輸出組件

4、保存執行

二、excel轉換成mysql

(1)在MySQL數據庫中創建數據庫,這個根據自身情況。我就在現有test庫中測試了。

(2)根據以上步驟,新建轉換。

(3)構建流程圖,選擇excel輸入和表輸出

(4)將兩個組件連接起來

(5)雙擊表輸入,文件選擇源文件的位置,然后點擊增加,在點擊【工作表】,獲取工作表名稱,把標簽移到右邊

(6)點擊「字段」選項卡,點擊「獲取來自頭部數據的字段...」按鈕,Kettle會從Excel中讀取第一行字段名稱。

??(7)將 age 字段的格式設置為#,register_date的格式設置為 yyyy-MM-dd HH:mm:ss。

(8)點擊「預覽記錄」按鈕查看抽取到的數據。如果數據格式有我呢提,在調整格式

(9)點擊「確定」按鈕并保存。

(10)配置MySQL組件,雙擊表輸出組件

(11)輸入目標表的名稱為:user,后續Kettle將在MySQL中創建一張名為 user 的表格。

(12)點擊下方的「SQL」按鈕,可以看到Kettle會自動幫助我們生成MySQL創建表的SQL語句,

(13)保存并執行轉換

(14)查看數據,由于ID 數據過大,需要把屬性換成 bigint

三、 MySQL表之間轉換

1、共享數據庫連接

2、需求:將user表中的數據,轉換到user1表中

3、新建轉換

4、構建kettle流程圖

5、配置Kettle數據流圖中的組件

?四、插入和更新組件

1、需求

2、新建轉換,步驟同上

3、構建kettle流程圖

4、執行轉換

5、結果查詢,目標表數據已經更新和插入

??五、switch/case組件

1、需求

2、構建流程圖

3、配置組件

4、執行

?六、SQL腳本組件

1、需求

2、構建kettle流程圖

3、配置組件,雙擊組件

4、保存執行


一、txt文本轉換成excel

txt文本內容
id,name,age,gender,province,city,region,phone,birthday,hobby,register_date
392456197008193000,張三,20,0,北京市,昌平區,回龍觀,18589407692,1970-8-19,美食;籃球;足球,2018-8-6 9:44
267456198006210000,李四,25,1,河南省,鄭州市,鄭東新區,18681109672,1980-6-21,音樂;閱讀;旅游,2017-4-7 9:14
892456199007203000,王五,24,1,湖北省,武漢市,漢陽區,18798009102,1990-7-20,寫代碼;讀代碼;算法,2016-6-8 7:34
492456198712198000,趙六,26,2,陜西省,西安市,蓮湖區,18189189195,1987-12-19,購物;旅游,2016-1-9 19:15
392456197008193000,張三,20,0,北京市,昌平區,回龍觀,18589407692,1970-8-19,美食;籃球;足球,2018-8-6 9:44
392456197008193000,張三,20,0,北京市,昌平區,回龍觀,18589407692,1970-8-19,美食;籃球;足球,2018-8-6 9:44

1、新建、轉換

然后將需要的轉換方式拖拽到右側面板并運行即可完成轉換

2、構建流程圖

(1)將左邊的核心對象中的輸入文件夾下的文本文件輸入?拖拽到中間空白區域。

?

(2)從輸出文件夾中將Excel輸出 組件拖拽到中間空白區域。

?

(3)按住Shift鍵點擊 文本文件輸入組件,移動鼠標到Excel輸出,然后釋放鼠標,這樣就可以將兩個組件連接到一起。

?

3、配置數據流圖中的各個組件

現在數據流的轉換方式與轉換方向已經確定,接下來要做的就是,配置每個組件,微調參數。

3.1、配置文件文本輸入組件

(1)雙擊文本文件輸入組件,在彈出窗口中點擊「瀏覽」按鈕。選擇要轉換的文本文件。

?(2)點擊「增加」按鈕,將文件加入到要抽取的數據中來。注意:不點添加按鈕,將不會抽取數據。

(3)點擊「內容」選項卡,將分隔符修改為逗號(注意是英文狀態的逗號),將編碼方式修改為:UTF-8。

?

(4)點擊「字段」選項卡,再點擊「獲取字段」按鈕,可以讀取到txt文件中的所有字段。獲取完也可以預覽。點確定保存。

?

?3.2、 配置Excel輸出組件

(1)雙擊 Excel輸出組件,在彈出窗口中點擊「瀏覽」按鈕。我先暫時保存到桌面。然后點擊確定。記得把擴展名刪除

(2)點擊「字段」選項卡,獲取字段,將age的格式設置為0,表示只輸出不帶小數點的數字。然后點擊確定。

?

4、保存執行

(1)點擊工具條上方的保存按鈕,或者按快捷鍵Ctrl + s。

?(2)點擊工具欄上的播放按鈕啟動執行。點擊啟動

?也會有日志輸出

執行結果,如果執行結果表中,長數字有逗號分隔的話,在雙擊表輸出,【字段】 格式那一列,調整格式即可

二、excel轉換成mysql

表格就按照我們剛才轉換的表格來轉換成MySQL數據

(1)在MySQL數據庫中創建數據庫,這個根據自身情況。我就在現有test庫中測試了。

(2)根據以上步驟,新建轉換。

(3)構建流程圖,選擇excel輸入和表輸出

(4)將兩個組件連接起來

(5)雙擊表輸入,文件選擇源文件的位置,然后點擊增加,在點擊【工作表】,獲取工作表名稱,把標簽移到右邊

?

(6)點擊「字段」選項卡,點擊「獲取來自頭部數據的字段...」按鈕,Kettle會從Excel中讀取第一行字段名稱。

?

??(7)將 age 字段的格式設置為#,register_date的格式設置為 yyyy-MM-dd HH:mm:ss。

(8)點擊「預覽記錄」按鈕查看抽取到的數據。如果數據格式有我呢提,在調整格式

?

(9)點擊「確定」按鈕并保存。

(10)配置MySQL組件,雙擊表輸出組件

????????數據庫連接這里 點擊新建連接,配置數據庫連接信息,點擊測試連接,看是否成功,如果報錯,看是否世缺少jdbc的驅動,去MySQL官網下載對應的驅動即可。

?

(11)輸入目標表的名稱為:user,后續Kettle將在MySQL中創建一張名為 user 的表格。

?

(12)點擊下方的「SQL」按鈕,可以看到Kettle會自動幫助我們生成MySQL創建表的SQL語句,

????????我們將age和gender字段的數據類型改為INT類型。并點擊執行按鈕,會自動在MySQL數據庫中創建該表。可以去數據庫驗證下。執行完之后,點擊確定并保存組件信息。

?

(13)保存并執行轉換

(14)查看數據,由于ID 數據過大,需要把屬性換成 bigint

?三、 MySQL表之間轉換

1、共享數據庫連接

????????在后續的Kettle中,我們需要多次用到上面的數據庫連接。在Kettle中,可以將一個數據庫共享,這樣其他的Kettle轉換就都可以復用該數據庫連接了。

(1)在轉換中,點擊「主對象樹」,點擊[DB連接]右鍵新建數據庫連接(如果連接已經存在,則無需創建)

(2)右鍵單擊需要的數據庫連接,選擇「共享」

(3)發現剛剛選擇的數據庫連接已經變成黑體字,說明已經共享成功。

2、需求:將user表中的數據,轉換到user1表中

3、新建轉換

4、構建kettle流程圖

(1)從核心對象的輸入組件中,將「表輸入」、「表輸出」組件拖拽到中間的空白處。

(2)安裝Shift鍵,并鼠標左鍵點擊表輸入組件,并拉動鼠標,移動到表輸出組件,松開鼠標。

5、配置Kettle數據流圖中的組件

(1)雙擊表輸入組件,在彈出對話框中選擇「獲取SQL查詢語句」。選擇要轉換的表。點擊否

?

(2)點擊「預覽」按鈕,查看是否能夠從MySQL讀取數據。

(3)雙擊表輸出組件,在目標表輸入t_user1,點擊SQL按鈕,會自動生成sql創建表語句,然后執行。

(4)保存轉換,并啟動。

(5)查詢數據庫,user表中的數據已經同步過來了。因為我加了篩選條件,所以只有張三的數據被同步了。

?四、插入和更新組件

????????插入/更新組件能夠將Kettle抽取的數據,與某個表的數據進行對比,如果數據存在就更新,不存在就插入。

1、需求

修改 user中的張三這一行數據,修改 age 為 30。如果想插入指定的數據,只能通過表輸出組件

2、新建轉換,步驟同上

3、構建kettle流程圖

????????1、選擇一個表輸入、表輸出組件,將兩個組件連接

????????2、配置流程圖中的表輸入組件,如上2.5.1步驟

????????3、雙擊 插入/更新 組件,在目標表,點擊瀏覽按鈕,找到user1表。

????????4、添加用來查詢的關鍵字,并獲取和更新字段,確定,保存

原表:

?

目標表:

?

4、執行轉換

?

5、結果查詢,目標表數據已經更新和插入

??五、switch/case組件

kettle中提供了一種實現判斷的組件叫做switch/case。

1、需求

從 user 表中讀取所有用戶數據,將性別為男的用戶導出到一個Excel、性別為女的導出到另外一個Excel。

2、構建流程圖

(1)將表輸入組件拖拽到中間的空白區域。

(2)從流程文件夾中將 Switch/case 組件拖拽到中間的空白區域。

(3)再分別拖入兩個Excel輸出組件。

(4)按住shift鍵,將組件按照下圖方式連接起來。

3、配置組件

(1)配置表輸入組件

雙擊表輸入組件,點擊獲取sql查詢。

(2)配置switch/case組件

????????此處要指定,按照性別來判斷輸出到Excel文件。需要設置 Switch字段為gender,在Case值列表中將值分別改為男、女。如果gender是男的話,則將數據裝載到 Excel輸出 - 男,如果gender是女的話,將數據裝載到 Excel輸出 - 女。

?(3)配置Excel輸出組件

雙擊Excel輸出組件,分別指定輸出到指定的文件夾中。兩個輸出組件操作相同。

?

?

(4)配置完成之后,保存,

4、執行

執行結果就能看出來,已經轉換到表中

?六、SQL腳本組件

執行SQL腳本組件,可以讓Kettle執行一段SQL腳本。我們可以利用它來自動執行某些操作。

1、需求

使用Kettle執行SQL腳本,將 user1 表中的數據清空。

2、構建kettle流程圖

我們在核心對象中,將腳本文件夾下的【執行SQL腳本】拖拽到右側的空白中,如圖所示:

3、配置組件,雙擊組件

我們要將 t_user1 表中的數據清空,所以腳本中要執行的語句如下:

TRUNCATE TABLE t_user1;

4、保存執行

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/9927.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/9927.shtml
英文地址,請注明出處:http://en.pswp.cn/web/9927.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一文了解spring的aop知識

推薦工具 objectlog 對于重要的一些數據,我們需要記錄一條記錄的所有版本變化過程,做到持續追蹤,為后續問題追蹤提供思路。objectlog工具是一個記錄單個對象屬性變化的日志工具,工具采用spring切面和mybatis攔截器相關技術編寫了api依賴包&a…

機器學習實戰寶典:用scikit-learn打造智能應用

書接上文——《數據探險家的終極指南:用Python挖掘機器學習的奧秘》 前文我們在這段精彩的機器學習探險之旅中,從基礎概念出發,深入探索了使用Python和scikit-learn庫進行數據分析和模型構建的全過程。 我們首先了解了機器學習的基本原理&am…

Mysql 鎖

鎖 從鎖的性能有樂觀鎖和悲觀鎖;鎖的粒度有行鎖、頁鎖、表鎖;鎖的對數據庫操作類型有讀鎖、寫鎖、意向鎖 樂觀鎖:采用cas機制,不會阻塞數據庫操作,只會針對當前事務進行失敗重試。(用于寫操作不多的情況)悲觀鎖&…

[c++]多態的分析

多態詳細解讀 多態的概念多態的構成條件 接口繼承和實現繼承: 多態的原理:動態綁定和靜態綁定 多繼承中的虛函數表 多態的概念 -通俗的來說:當不同的對象去完成某同一行為時,會產生不同的狀態。 多態的構成條件 必須通過基類的指針或者引用調用虛函數1虛…

【C++刷題】優選算法——遞歸第一輯

什么是遞歸? 函數自己調用自己的情況為什么會用到遞歸? 本質:在解決主問題的時候衍生出一個相同處理過程的子問題,子問題再繼續衍生子問題…如何理解遞歸? 第一層次的理解:遞歸展開的細節圖第二層次的理解&…

C語言/數據結構——(鏈表的回文結構)

一.前言 今天在牛客網上刷到了一道鏈表題——鏈表的回文結構https://www.nowcoder.com/practice/d281619e4b3e4a60a2cc66ea32855bfa?,巧合的是它的解題思路恰好是我們一起分享過兩道鏈表題的匯總。這兩道題分別是反轉鏈表和鏈表的中間節點。廢話不多數&#xff0c…

mybatis 多表查詢

一對一&#xff1a; 第一&#xff1a;在一中的類添加另外一個類作為屬性。如&#xff08;在Order類中添加private User orderUser;&#xff09; 第二&#xff1a;在mapper.xml配置關聯。&#xff08;mapper接口不變&#xff09; <!-- resultMap標簽&#xff1a;解決查詢結…

Redis 源碼安裝和入門介紹

Linux下的redis源碼安裝 redis介紹 Redis 是一個開源&#xff08;BSD許可&#xff09;的&#xff0c;內存中的數據結構存儲系統&#xff0c;它可以用作數據庫、緩存和消息中間件。它支持多種類型的數據結構&#xff0c;如 字符串&#xff08;strings&#xff09;&#xff0c;…

智能商品計劃系統:引領未來零售業的革新之路

隨著科技的飛速發展&#xff0c;人工智能&#xff08;AI&#xff09;和大數據技術已成為推動各行業革新的關鍵動力。在零售行業中&#xff0c;智能商品計劃系統的出現&#xff0c;正逐步改變著傳統的商品規劃與管理方式&#xff0c;為品牌注入新的活力與競爭力。本文將對智能商…

Java入門基礎學習筆記14——數據類型轉換

類型轉換&#xff1a; 1、存在某種類型的變量賦值給另一種類型的變量&#xff1b; 2、存在不同類型的數據一起運算。 自動類型轉換&#xff1a; 類型范圍小的變量&#xff0c;可以直接賦值給類型范圍大的變量。 byte類型賦值給int類型&#xff0c;就是自動類型轉換。 pack…

基于大數據的醫療信息化系統

基于大數據的醫療信息化系統是一個復雜且不斷發展的領域,它結合了現代信息技術和醫療專業知識,以提高醫療服務的效率、質量和可及性。以下是一個關于基于大數據的醫療信息化系統的概述 一、引言 隨著信息技術的快速發展和醫療改革的深入推進,醫療信息化已成為醫療領域的重…

Android 屏幕適配全攻略(中)-從九宮格到矢量圖,揭秘Android多屏幕適配的正確打開方式

在移動互聯網時代&#xff0c;無論是小小的手機屏幕&#xff0c;還是大大的平板顯示器&#xff0c;Android 應用都必須做到完美適配&#xff0c;給用戶以極佳的體驗。本文將剖析 Android 多屏幕適配背后的種種技術細節&#xff0c;為您揭開最佳實踐的正確打開方式&#xff0c;讓…

速賣通ip地址會相互影響嗎?如何防止賬號關聯?

在跨境電商行業&#xff0c;大部分平臺都是不允許一個賣家操作多個店鋪的&#xff0c;如果被平臺檢測出賬戶關聯&#xff0c;可能會被封店。在速賣通平臺&#xff0c;會通過IP地址來判斷是否經營多個賬號嗎?IP地址會使店鋪相互影響嗎? 一、速賣通IP地址會關聯嗎? 首先各位賣…

解決mybatis的配置文件沒代碼提示的問題

1.將org.apache.ibatis.builder.xml包里的兩個dtd文件復制出來&#xff0c;jar包里復制 2.復制dtd的url地址&#xff1a; http://mybatis.org/dtd/mybatis-3-mapper.dtd 一樣的做法&#xff01; 3.關閉兩個配置文件&#xff0c;重新打開&#xff0c;就可以有代碼提示了&…

【智能優化算法】白鯊智能優化算法(White Shark Optimizer,WSO)

白鯊智能優化算法(White Shark Optimizer,WSO)是期刊“KNOWLEDGE-BASED SYSTEMS”&#xff08;中科院一區期刊 IF8.6&#xff09;的2022年智能優化算法 01.引言 白鯊智能優化算法(White Shark Optimizer,WSO)的核心理念和基礎靈感來自大白鯊的行為&#xff0c;包括它們在導航和…

從項目開始學習Vue——02(若依框架)

往期&#xff1a; 從項目開始學習Vue——01 目錄標題 一、基礎插件&#xff08;一&#xff09;路由Vue Router&#xff08;二&#xff09;導航守衛&#xff08;路由攔截器&#xff09;二、Vuex&#xff08;一&#xff09;什么是VuexVuex的部分介紹內容&#xff1a; &#xff08…

QQ超大文件共享(別用,傳進去后,壓縮都顯示不出來,LJ qq!)(共享文件)

文章目錄 需要共享雙方同時在線開啟方法第一次會提示設置默認共享目錄&#xff0c;默認是E:\QQFileShare\<qq號>\&#xff1a;然后新建共享會在其后創建共享目錄&#xff0c;共享目錄中只能共享文件。需要點擊添加文件&#xff0c;直接把文件拷貝到目錄里好像還不行&…

C語言/數據結構——(相交鏈表)

一.前言 今天在力扣上刷到了一道題&#xff0c;想著和大家一起分享一下這道題——相交鏈表https://leetcode.cn/problems/intersection-of-two-linked-lists廢話不多說&#xff0c;讓我們開始今天的分享吧。 二.正文 1.1題目描述 是不是感覺好長&#xff0c;我也這么覺得。哈…

網絡編程套接字和傳輸層tcp,udp協議

認識端口號 我們知道在網絡數據傳輸的時候&#xff0c;在IP數據包頭部有兩個IP地址&#xff0c;分別叫做源IP地址和目的IP地址。IP地址是幫助我們在網絡中確定最終發送的主機&#xff0c;但是實際上數據應該發送到主機上指定的進程上的&#xff0c;所以我們不僅要確定主機&…

OAuth 2.0 和 OAuth 2.1

OAuth 2.0 和 OAuth 2.1比較&#xff1a; OAuth 2.0 和 OAuth 2.1 是授權框架的不同版本&#xff0c;它們用于允許應用程序安全地訪問用戶在另一個服務上的數據。以下是它們之間的一些主要區別&#xff1a; 安全性增強&#xff1a;OAuth 2.1 旨在提高安全性&#xff0c;它整合…