快速上手kettle(二)小試牛刀

来源:https://www.cnblogs.com/xiezhr/archive/2023/05/29/17439369.html
-Advertisement-
Play Games

[TOC](快速上手kettle二 小試牛刀) ### 一 、前言 上一期中大概介紹了下kettle,並已經把kettle下載安裝完了。 這一期我們就來簡單體驗下kettle怎麼進行數據轉換的。 ### 二 、兩個小目標 我們這裡呢就以兩個小案例來體驗下kettle - 將csv文件通過kettle ...


目錄

一 、前言

上一期中大概介紹了下kettle,並已經把kettle下載安裝完了。

這一期我們就來簡單體驗下kettle怎麼進行數據轉換的。

二 、兩個小目標

我們這裡呢就以兩個小案例來體驗下kettle

  • 將csv文件通過kettle轉換成excel文件
  • 將excel文件通過kettle寫入到資料庫表中

三、 kettle核心概念介紹

kettle 被稱為可視化編程語言,可以完成複雜的etl工作流。kettle里的代碼就是轉換和作業。

所以呢,我們首先就來說說轉換和作業。

3.1 轉換

從下麵截圖中,我們看到轉換包含了很多核心對象,說明其包含了很多功能。後面有得我們學的了(開個玩笑)

--轉換包含元素 --轉換核心對象
轉換核心元素 轉換核心對象 轉換核心對象
  • 轉換(transaformation)負責數據的輸入、轉換、校驗和輸出等,kettle中轉換完成了ETL的全部工作

  • 轉換由多個步驟 (Step) 組成。包含各種文件格式的數據輸入/輸出 (如csv文件輸入、sql文件輸出、sql腳本執行、各種查詢等等)

  • 如果各個步驟之間需要資料庫操作,我們就需要建立DB連接

  • 各個步驟之間使用跳(Hops)來連接。我們可以將跳理解為一條道路,數據有一個步驟(驛站)通過(道路)流向下一步驟(驛站)

  • kettle中最小的數據單元是

轉換

3.1.1 步驟(Step)

步驟是轉換里的基本組成部分,上面截圖中包含了兩個步驟
CSV文件輸入
Excel輸出

  • 每個步驟都會涉及到數據行

  • 步驟將數據寫到與之相連的一個或多個輸出跳(hop),再傳送到跳的另一端的步驟

  • 大多數的步驟都可以有多個輸出跳。一個步驟的數據發送可以被設置為分發複製

    image-20230527212552068

3.1.2 跳(Hop)

是兩個步驟(驛站)之間的道路(帶箭頭的連線)

  • 是兩個步驟之間的數據行緩存

  • 當行集滿了,向行集寫數據的步驟將停止寫入,直到行集里又有了空間

  • 當行集了,從行集讀取數據的步驟停止讀取,直到行集里又有可讀的數據行

image-20230527212925992

可以通過如下方式查看和修改行緩存大小

①右鍵轉換-->設置 ② 選擇"雜項"tab頁
image-20230527213910795 image-20230527213956315
3.1.3 元素據

每個步驟在輸出數據行時都有對欄位的描述,這種描述就是數據行的元數據

通常包含下麵一些信息。

名稱:數據行里的欄位名是唯一的。

數據類型:欄位的數據類型。

格式:數據顯示的方式,如Integer的#、0.00。

長度:字元串的長度或者BigNumber類型的長度。

精度:BigNumber數據類型的十進位精度。

貨幣符號:¥

小數點符號:十進位數據的小數點格式。不同文化背景下小數點符號是不同的,一般是點(.)或逗號(,)。

分組符號:數值類型數據的分組符號,不同文化背景下數字里的分組符號也是不同的,一般是點(.)或逗號(,)或單引號(’)

這裡的輸入文件十csv格式數據,所以分組符號是逗號","

image-20230527221440326

3.1.4 數據類型

數據以數據行(可以理解為一個表格中的一行) 的形式沿著步驟移動,每個數據行又有多個欄位元素(可以理解為一個單元格)構成

就像在excel中,每個單元格都可以設置數據格式一樣,這裡數據行中的欄位也有自己的數據類型.

常見的數據類型有以下幾種

--數據類型 --說明
String 字元類型數據
Number 雙精度浮點數
Integer 帶符號長整型(64位)
BigNumber 任意精度數據
Date 帶毫秒精度的日期時間值
Boolean 取值為true和false的布爾值類型
Binary 二進位欄位可以包含圖像、聲音、視頻及其他類型的二進位數據

數據類型

3.1.5 併發執行

我們經常需要處理大量的數據,所以設計了這樣的行集緩存規則,使得每個步驟就是一個獨立線程.所有步驟都以併發方式執行.

當轉換啟動後,所有步驟都同時啟動,從它們的輸入跳中讀取數據,並把處理過的數據寫到輸出跳.

直到輸入跳里不再有數據,就中止步驟的運行。

當所有的步驟都中止了,整個轉換就中止了

如果想要一個任務沿著指定的順序執行,那麼就要使用下麵所講的“作業”來做流程式控制制

3.2 作業

負責定義一個完成整個工作流的控制,如將轉換的結果發送郵件給相關人員.

因為轉換(transformation)以並行方式執行,所以必須存在一個串列的調度工具來執行轉換,這就是 Kettle中的作業

四、實踐操作

4.1 案例1 將csv文件轉換成excel文件

4.1.1 在kettle中新建一個轉換

新建轉換

4.1.2選擇輸入控制項並設置

核心對象-->輸入-->CSV文件輸入 (將控制項拖入工作區)

① 選擇CSV文件輸入控制項 ②將控制項拖入工作區
選擇 拖入
③ 選擇源文件 ④ 檢查csv數據是否正常讀出
選擇源文件 讀取數據
4.1.3 選擇輸出控制項並設置
① 選擇Excel輸出控制項 ②將控制項拖入工作區
image-20230527230537467 拖入工作區
③ 設置輸出文件名
image-20230527231014203
4.1.4 按住shift 通過將輸入輸出兩步驟連接起來

image-20230527231441251

4.1.5 點擊啟動按鈕執行轉換

image-20230527231624181

4.1.6查看日誌,並檢查是否成功
①日誌沒報錯 ②文件也寫入成功了
image-20230527231913544 image-20230527232017215

4.2 案列2 將excel文件導入MySQL資料庫

4.2.1和上面步驟一樣我們需要新建一個轉換

案例2轉換

4.2.2 新建資料庫連接

由於案例2需要涉及到MySQL資料庫,所以我們需要建立DB連接

①下載MySQL驅動(需要下載對應版本的) 我用的是MySQL5.7 ,所以這裡下載5.1.37 版本驅動

官方地址:https://downloads.mysql.com/archives/c-j/

MySQL驅動下載

② 將下載的好的MySQL驅動包放入lib文件夾下

驅動包路徑

③新建DB連接

image-20230527235403720

註: 如果沒有下載驅動包或者驅動包版本與MySQL版本不一致,會包如下錯誤

驅動包不對報錯

4.2.3 拖入Excel輸入控制項並設置

① 將Excel輸入控制項拖入工作區

Excel輸入控制項拖入工作區

②設置Excel輸入控制項

設置源文件

添加文件

獲取工作表

獲取數據欄位

直到點擊預覽記錄後獲取到如下截圖所示數據,說明輸入設置成功了

預覽到數據

4.2.4 拖入表輸出控制項並設置

① 將表輸出控制項拖入工作區

表輸出控制項拖入工作區

② 通過 將輸入輸出控制項連接起來

跳連接

③設置需要導入數據的目標表

選擇目標表

④ 匹配資料庫欄位

匹配資料庫欄位

4.2.5 點擊啟動按鈕進行轉換

image-20230528095444390

4.2.6 查看日誌並檢查MySQL數據表中是否有數據

①日誌顯示轉換成功

日誌顯示成功

② 我們再來看看資料庫test的t_tv 表中也有數據了

image-20230528095831318

到此通過兩個案例小試牛刀之後都轉換成功了,是不是有點小成就感呢。

其實這隻是kettle工具的冰山一角,從kettle那麼多核心對象可以看得出來,它還有很多很多很多得玩法等著我們去開啟。

本期內容到此就結束了,希望內容對你有所幫助,我們下期再見 (●'◡'●)

上一篇:快速上手kettle(一)壺之簡介
下一篇:快速上手kettle(三):kettle常用輸入控制項使用(小編正在玩命更新中)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 雖然之前已經有了《7千多條周公解夢斷夢秘書ACCESS資料庫》、《4千多周公解夢包含化解方法ACCESS資料庫》等相關的周公解夢的資料庫,但今天發現的周公解夢的記錄數量已經達到了上萬條,雖然分類沒有《7千多條周公解夢斷夢秘書ACCESS資料庫》多,但記錄數多出了不少。 分類情況彙總有:01自然類(6 ...
  • 《上萬條全球各國紙幣大全含圖ACCESS資料庫》是今天採集自錢幣大全網站的紙幣資料,大類包含:中國大陸、中國臺灣、中國香港、中國澳門、亞洲紙鈔、歐洲紙鈔、美洲紙鈔、非洲紙鈔 、大洋洲、其他紙鈔等,而且紙幣信息包含:國家名稱、英文名稱、目錄編號、紙鈔面額、紙鈔年版、紙鈔規格、所屬類別、詳細信息等。 收 ...
  • 我記得之前我採集、提取過兩份菜譜資料資料庫,一份是菜譜數據不上萬的帶圖片的,詳情點擊這裡,一份是2萬多條記錄但格式未整理並且沒有圖片的。而今天的這個3萬多條含圖片的菜譜資料ACCESS資料庫包含了3萬多條常菜譜做法,並且結構簡潔,最主要的是每個菜譜都包含圖片。 菜譜分50個大類和400多種小類,大類 ...
  • 一個學語文的朋友問我有沒有關於中華典故以及萬物由來的數據,我看了看手頭的資料發現還真沒有,而且網上似乎也沒有這一類的成品,因此就用程式採集了一個中華典故網的文章。 分類統計情況有:成語典故(共4198條)、典故雜聞(共702條)、國外典故(共29條)、科學典故(共29條)、歷史典故(共374條)、神 ...
  • 本系列為:MySQL資料庫詳解,為千鋒資深教學老師獨家創作,致力於為大家講解清晰MySQL資料庫相關知識點,含有豐富的代碼案例及講解。如果感覺對大家有幫助的話,可以【關註】持續追更 ...
  • 《公務員考試基礎知識題庫ACCESS資料庫》搜集了大量公務員考試試題,包括公共基礎知識試題、行政職業能力試題、法律基礎知識試題、公安基礎知識試題等。 分類記錄統計情況為:法律基礎知識試題(共1359條)、公安基礎知識試題(共1709條)、公共基礎知識試題(共2905條)、行政職業能力試題(共6613 ...
  • 《求職面試寶典大全ACCESS資料庫》包含:1-穿著打扮、2-隨身攜帶、3-場景指導、4-考官分析、5-考官問題、6-回答參考表、7-面試大全。雖然有些表的記錄數不多,但勝在信息全面以及考官問題及答案的全面。 問題類型記錄數為:待遇問題(10條)、個人素養(10條)、教育家庭(10條)、經驗問題(1 ...
  • 因為簽於網站笑話不是採用微博型(一句或兩句短篇可以採用250長度的文本型存儲),而是所以文章內容型,所以內容保存的欄位是 Microsoft Access 資料庫里的備註類型。 資料庫內容經過整理,格式比較統一,比如不會有多餘的段落或不整齊的段落;分類比較集中,只有爆笑男女(305)、兒童笑話(59 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...