天天看點

社工庫資料格式化之Kettle Spoon

前言

現在的資料庫種類越來越多,資料庫備份的格式也越來越複雜,是以資料格式化一直是一個老生常談的問題。據庫備份檔案格式那麼多,既有SQL的,也有BAK的,還有TXT的等。資料庫種類也有很多,MySQL,Oracle,SQL server等,怎麼對這些資料庫進行管理?昨天洩露access格式的資料庫,今天洩露了excel格式的資料庫,明天又洩露了SQL格式的資料庫。要格式化那麼多種類的資料庫,壓力山大啊!搭建個本地的社工庫怎麼那麼複雜?

這裡就要說到kettle。首先得說說Pentaho這個企業。Pentaho主要緻力于大資料的分析,整理和管理,并且這家公司開發出來的工具是開源的!沒錯,就是開源的。任何人都可以檢視這個項目的源代碼,并且對其進行更改和研究。這家公司開發了很多管理工具或者架構,最為出名的就是kettle了。Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運作,資料抽取高效穩定。ELT的全稱為Extraction, Transformation Loading,其中文解釋為提取,轉換和加載。Kettle這個工具裡面有SPOON,PAN,CHEF,Encr和KITCHEN這麼五個基本組建。

SPOON 允許你通過圖形界面來設計ETL轉換過程(Transformation)。

PAN 允許你批量運作由Spoon設計的ETL轉換 (例如使用一個時間排程器)。Pan是一個背景執行的程式,沒有圖形界面。

CHEF 允許你建立任務(Job)。 任務通過允許每個轉換,任務,腳本等等,更有利于自動化更新資料倉庫的複雜工作。任務通過允許每個轉換,任務,腳本等等。任務将會被檢查,看看是否正确地運作了。

KITCHEN 允許你批量使用由Chef設計的任務 (例如使用一個時間排程器)。KITCHEN也是一個背景運作的程式。

Encr 此腳本是用來加密連接配接資料庫密碼與叢集時使用的密碼

今天我們主要講的是SPOON,這裡會做一個基礎的講解,以便達到抛磚引玉的作用。

1.基本安裝

由于Kettle是由JAVA代碼所編寫的,是以大家要運作Kettle首先是下載下傳安裝JDK并且設定好環境變量。Kettle的下載下傳位址是“​​傳送門​​”。

下載下傳完成後,你會得到一個RAR壓縮包,請對壓縮包進行解壓。

解壓完成後在檔案更目錄内,你可以看到幾個bat檔案和sh檔案,這裡就是kettle工具的打開的方式。

 ​

社工庫資料格式化之Kettle Spoon

這裡做個常識普及。

windows系統的使用者請用bat檔案打開kettle

linux系統的使用者請用sh檔案打開kettle

這裡主要說的是kettle spoon的一個基本講解。運作spoon.bat或者spoon.sh後等待幾秒鐘就可以看到kettle spoon的基本界面了。

 ​

社工庫資料格式化之Kettle Spoon

2.基本模組化

建立作業

在開始對資料管理之前,我們需要建立一個作業。點選檔案,建立中的作業選項,産生出一個作業。

社工庫資料格式化之Kettle Spoon

在核心對象這裡,我們可以看到kettle spoon中非常主要的幾個基本功能和子產品。

 ​

社工庫資料格式化之Kettle Spoon

資料輸入

資料庫的備份格式有很多,有bak,sql,txt,csv等等。這裡需要對這些檔案有一個基本的管理,這裡就扯到了資料庫輸入子產品,我們得先把自己的輸入子產品建立好。下面這張圖是kettle spoon上幾個輸入的基本子產品。

 ​

社工庫資料格式化之Kettle Spoon

這裡對輸入子產品做個基本的操作教程,我們先來看看對資料庫備份檔案怎麼進行輸入的。滑鼠左鍵單擊一個子產品拖動到作業方框内就可以對這個子產品進行編輯。

 ​

社工庫資料格式化之Kettle Spoon

假設我要對一個txt格式的洩露資料庫進行入庫,那麼首先應該檢視的是字段的分隔符和限定符。

 ​

社工庫資料格式化之Kettle Spoon

然後拖動一個文本檔案輸入子產品到作業内。

 ​

社工庫資料格式化之Kettle Spoon

輕按兩下這個子產品對其進行設定。

 ​

社工庫資料格式化之Kettle Spoon

然後點選浏覽,選擇要導入的資料庫檔案,然後點選增加。

 ​

社工庫資料格式化之Kettle Spoon

通過上圖已經知道了資料庫字段的分隔符,在内容處填寫好分隔符。這裡除了分隔符的設定還可以設定文本顯示格式,限定符等等。

社工庫資料格式化之Kettle Spoon

然後就是擷取table表格。在這個設定内,你還可以對table表的表名進行編輯。

 ​

社工庫資料格式化之Kettle Spoon

在設定完成後,我們需要預覽一下整個table表,檢視自己的設定是否正确。

 ​

社工庫資料格式化之Kettle Spoon

當然,這裡隻是一個非常簡單的txt無加密備份的資料庫,KettleSpoon還提供Accesss,SQL,CSV等資料輸入格式,甚至還提供資料庫對資料庫輸入。比如你要把oracle資料庫中的資料輸入到mysql的資料庫中,你可能需要先把資料備份下來,整理好後在導入到mysql資料庫中。但是在kettle spoon中,你可以直接在資料流中進行傳輸,直接省去了中間的這一步。在表輸入子產品中可以使用這個功能。

 ​

社工庫資料格式化之Kettle Spoon

資料加工

通過上面的步驟,已經成功的把資料輸入進來,但是我們還需要對資料進行整理。比如增加序列,增加字段,資料加密等。這裡再繼續舉個例子。因為本地社工庫有海量的資料,是以就需要做資料索引。索引資料有個很關鍵的地方就是ID,每一條資料需要不同的ID進行索引,而且ID的值還不能是普通的int類型,必須是bigint類型。這裡需要對海量的資料進行一個規範的整理和加工。

假設我的社工庫中已經有199條資料了,我需要對新的每條資料重新做一個ID序列,ID起始值為200,每條資料之間的ID值增加兩個數字。雖然感覺很複雜,但是kettle spoon卻可以很輕易的解決這個問題。

從轉換處拖出一個增加序列子產品到作業内,然後滑鼠左鍵單擊文本檔案輸入子產品,并且按住shift鍵不放,同時往任意方向上拖動滑鼠,這個時候你會看到一條線。把它連結到增加序列子產品。

 ​

社工庫資料格式化之Kettle Spoon

輕按兩下增加序列子產品進入到設定界面,在值的名稱那裡設定字段名稱為newid。因為ID的起始值是200,是以起始值設定成200。因為每條資料之間的ID增加兩個數字,是以增長根據這裡設定成2。最後點選确定。

 ​

社工庫資料格式化之Kettle Spoon

這樣一個增加序列的設定就完成了。當然這個例子隻是一個非常簡單的功能,裡面有很多資料處理的功能等着大家一一嘗試。

資料輸出

資料輸入也有了,加工步驟也有了,那麼該對資料進行輸出了。在資料輸出的時候可能大家會對其有一些要求,比如我不想要某些字段,或者我想設定資料的格式等。這裡kettle都可以幫助到你。Kettle甚至提供了多種資料輸出的子產品,大家可以查其輸出菜單。

 ​

社工庫資料格式化之Kettle Spoon

這裡還是繼續舉一下剛才的例子。假設新的資料我隻要剛才的新生成的ID,Usename和password字段,其它的我都不要,并且資料要輸出到excel表格内,而且資料的字型是Arial,大小是10。

那麼我們可以先建立一個excel輸出子產品,然後該子產品需要與之前的增加序列子產品進行連接配接。

 ​

社工庫資料格式化之Kettle Spoon

随後輕按兩下excel子產品進行設定。在浏覽那裡選擇excel的儲存路徑。

 ​

社工庫資料格式化之Kettle Spoon

然後在格式這裡設定excel的字型格式等。

 ​

社工庫資料格式化之Kettle Spoon

然後在字段這裡先選擇擷取字段,然後删除不想要的字段,并且對字段進行排序。

 ​

社工庫資料格式化之Kettle Spoon

然後點選左上角的開始即可開始對資料的輸出

 ​

社工庫資料格式化之Kettle Spoon

下圖是整理後的資料。可以看到資料的ID從200開始,并且每條資料增加兩個數字。同時字段要求和字型格式要求都已經達到。因為我自己的excel的設定問題,所有的數字後面都會有兩個小資料點,這個不影響。

 ​

社工庫資料格式化之Kettle Spoon

總結

實際上剛才展示的隻是一個非常基礎的kettle資料模組化,還有更加複雜的,我給大家展示一下

多備份資料庫輸入到單一excel檔案内

 ​

社工庫資料格式化之Kettle Spoon

多資料線上同步并且加密到異地伺服器内

 ​

社工庫資料格式化之Kettle Spoon

單一檔案增加常量和序列并且同時同步到多個資料庫内