介紹:
Kettle簡介:Kettle 是 PDI 以前的名稱,PDI 的全稱是Pentaho Data Integeration,Kettle 本意是水壺的意思,表達(dá)了數(shù)據(jù)流的含義。Kettle是一款國外開源的ETL工具,純JAVA編寫,可以在Window、linux、Unix上運行,綠色無需安裝,數(shù)據(jù)抽取高效穩(wěn)定。Kettle這個ETL工具集,它允許你管理來自不同數(shù)據(jù)庫的數(shù)據(jù),通過提供一個圖形化的用戶環(huán)境來描述你想做什么,而不是你想怎么做。Kettle中有兩種腳本文件,transformation和job,transformation完成針對數(shù)據(jù)的基礎(chǔ)轉(zhuǎn)換,job則完成整個工作流的控制。作為Pentaho的一個重要組成部分,現(xiàn)在在國內(nèi)項目應(yīng)用上逐漸增多。
ETL(Extract-Transform-Load的縮寫),即數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過程。對于企業(yè)或行業(yè)應(yīng)用來說,我們經(jīng)常會遇到各種數(shù)據(jù)的處理,轉(zhuǎn)換,遷移,所以了解并掌握一種etl工具的使用,必不可少,這里我介紹一個我在工作中使用了很久的ETL工具Kettle,本著好東西不獨享的想法,跟大家分享碰撞交流一下!在使用中我感覺這個工具真的很強大,支持圖形化的GUI設(shè)計界面,然后可以以工作流的形式流轉(zhuǎn),在做一些簡單或復(fù)雜的數(shù)據(jù)抽取、質(zhì)量檢測、數(shù)據(jù)清洗、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)過濾等方面有著比較穩(wěn)定的表現(xiàn),其中最主要的我們通過熟練的應(yīng)用它,減少了非常多的工作量,提高了我們的工作效率。
特點
免費開源
基于java的免費開源的軟件,對商業(yè)用戶也沒有限制。
易配置
可以在Window、Linux、Unix上運行,綠色無需安裝,數(shù)據(jù)抽取高效穩(wěn)定。
不同數(shù)據(jù)庫
ETL工具集,它允許你管理來自不同數(shù)據(jù)庫的數(shù)據(jù)。
兩種腳本文件
transformation和job,transformation完成針對數(shù)據(jù)的基礎(chǔ)轉(zhuǎn)換,job則完成整個工作流的控制。
圖形界面設(shè)計
通過圖形界面設(shè)計實現(xiàn)做什么業(yè)務(wù),無需寫代碼去實現(xiàn)。
定時功能
在Job下的start模塊,有一個定時功能,可以每日,每周等方式進(jìn)行定時。
在這里插入圖片描述
環(huán)境
windows 10
Java 8 (運行Kettle 7.0 以上版本需要Java8及以上)
Kettle 7.1
MySQL-connector-java-8.0.21(連接Mysql驅(qū)動包,根據(jù)數(shù)據(jù)庫版本下載)
一鍵安裝,急速使用
第一步. 下載程序包并解壓
從官方網(wǎng)站下載spoon壓縮包。
第二步. 一鍵啟動
在windows下,解壓后,雙擊spoon.bat文件運行。
開始使用
開始可視化數(shù)據(jù)操作吧。
1.下載Kettle程序包并解壓
Kettle 7.1版本下載地址:https://udomain.dl.sourceforge.net/project/pentaho/Data%20Integration/7.1/pdi-ce-7.1.0.0-12.zip
Kettle各個版本下載地址:https://sourceforge.net/projects/pentaho/files/
注意:
下載時進(jìn)入相應(yīng)版本后,選擇client-tools,選擇pdi-ce開頭的程序包下載。
在這里插入圖片描述
在這里插入圖片描述
2.下載連接驅(qū)動包:
Java 連接 MySQL 需要驅(qū)動包,MySQL驅(qū)動包官網(wǎng)下載地址:
https://dev.mysql.com/downloads/connector/j/
在這里插入圖片描述
在這里插入圖片描述
3.解壓Java連接Mysql 8.0驅(qū)動包
解壓后取出mysql-connector-java.jar包(這里驅(qū)動包有版本號)。放到kettle的lib目錄下面。
在這里插入圖片描述
在這里插入圖片描述
4.運行spoon.bat,打開spoon圖形工具
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
注意:
紅圈處沒有connect按鈕,原因為資源庫配置文件亂碼造成。
解決方法: 打開系統(tǒng)盤用戶目錄下的repositories.xml配置文件,將亂碼內(nèi)容刪除,并刪除.spoonrc文件,再重啟kettle。
在這里插入圖片描述
5.創(chuàng)建或連接資源庫
選擇創(chuàng)建數(shù)據(jù)庫資源庫
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
輸入資源庫名稱(自定義) 點擊Database Connection創(chuàng)建數(shù)據(jù)庫連接。
在這里插入圖片描述
選擇Create New Connection。
在這里插入圖片描述
6.創(chuàng)建數(shù)據(jù)庫連接
輸入連接名稱、選擇類型(根據(jù)自身所需選擇,這里連接的是mysql數(shù)據(jù)庫,如連接其他數(shù)據(jù)庫,需將數(shù)據(jù)庫驅(qū)動放在kettle根目錄中的lib下面,然后啟動數(shù)據(jù)庫重啟kettle) 確認(rèn)輸入無誤后點擊測試,測試是否連接成功,失敗多為lib下找不到數(shù)據(jù)庫驅(qū)動
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里選擇剛才我們創(chuàng)建的數(shù)據(jù)庫名稱。
在這里插入圖片描述
創(chuàng)建成功,選擇Connect Now連接到數(shù)據(jù)庫。
在這里插入圖片描述
登陸時,默認(rèn)是admin用戶,密碼也是admin,啟動后可以修改用戶密碼或添加其他用戶。
在這里插入圖片描述
7.登錄數(shù)據(jù)庫查看Kettle自動創(chuàng)建的表結(jié)構(gòu)
[root@localhost ~]# Docker exec -it mysql /bin/bash
root@2a12523bd803:/# mysql -uroot -p123qqq...A
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 13
Server version: 8.0.21 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
mysql> use test;
mysql> show tables;
+--------------------------+
| Tables_in_test |
+--------------------------+
| R_CLUSTER |
| R_CLUSTER_SLAVE |
| R_CONDITION |
| R_DATABASE |
| R_DATABASE_ATTRIBUTE |
| R_DATABASE_CONTYPE |
| R_DATABASE_TYPE |
| R_DEPENDENCY |
| R_DIRECTORY |
| R_ELEMENT |
| R_ELEMENT_ATTRIBUTE |
| R_ELEMENT_TYPE |
| R_JOB |
| R_JOBENTRY |
| R_JOBENTRY_ATTRIBUTE |
| R_JOBENTRY_COPY |
| R_JOBENTRY_DATABASE |
| R_JOBENTRY_TYPE |
| R_JOB_ATTRIBUTE |
| R_JOB_HOP |
| R_JOB_LOCK |
| R_JOB_NOTE |
| R_LOG |
| R_LOGLEVEL |
| R_NAMESPACE |
| R_NOTE |
| R_PARTITION |
| R_PARTITION_SCHEMA |
| R_REPOSITORY_LOG |
| R_SLAVE |
| R_STEP |
| R_STEP_ATTRIBUTE |
| R_STEP_DATABASE |
| R_STEP_TYPE |
| R_TRANSFORMATION |
| R_TRANS_ATTRIBUTE |
| R_TRANS_CLUSTER |
| R_TRANS_HOP |
| R_TRANS_LOCK |
| R_TRANS_NOTE |
| R_TRANS_PARTITION_SCHEMA |
| R_TRANS_SLAVE |
| R_TRANS_STEP_CONDITION |
| R_USER |
| R_VALUE |
| R_VERSION |
| mysqltest |
+--------------------------+
mysql> select * from R_USER;
+---------+-------+-----------------------------------+---------------+-------------------------+---------+
| ID_USER | LOGIN | PASSWORD | NAME | DESCRIPTION | ENABLED |
+---------+-------+-----------------------------------+---------------+-------------------------+---------+
| 1 | admin | 2be98afc86aa79ce71da9fa6d4 | Administrator | User manager | 1 |
| 2 | guest | 2be98afc86aace77cb97bcce | Guest account | Read-only guest account | 1 |
+---------+-------+-----------------------------------+---------------+-------------------------+---------+
8.添加新用戶
點擊工具 --> 資源庫 --> 探索資源選擇【安全】--> 添加用戶 -->填寫賬號密碼保存即可。