1. 怎樣利用kettle去一次性讀取表中所有的數據
拖動表輸入控制項,綁定數據源連接你要查詢的資料庫
SQL語句
select * frm table
此時你已經可以獲取表中所有數據,根據你後續的需要,再去執行後續相關的操作。
例如過濾就用過濾控制項,同步就用表輸出控制項插入另一張表(甚至可以不同數據源)
2. kettle中做查詢時,遇到大數據時怎麼處理
在kettle常常有處理從一個源數據中做轉換.做轉換的時候, 需要去查另一個資料庫.
這種問題遇到數據小時候還好辦. 但是數據魘 時候就麻煩來了.
下面針對三種情況做具體情況的選擇辦法
先上一個圖
[img]
[/img]
1. 當需要轉換的數據特別大的時候, 例如: 10W條以上.或者100W條以上時.
上圖中,hadoop數據導入,導入的數據如果夠多,例如100W條以上,其中一個欄位需要查詢資料庫中查詢,而這個欄位的類型並不多,例如只有10個類型或者資料庫中就只有這10個類型.那麼,可以走線路2, 並且線路2中的 "使用緩存" 可以打勾,也可以不打.當然你這個源里的數據太多,打上當然最好了.因為省得再去你的資料庫里再查.
但是當源里的數據類型還是只有10個類型,但是你的資料庫裡面存了有10000條記錄時,怎麼辦?
有兩種解決辦法:
1).線路2:並且查詢節點中的 "使用緩存" 不能打勾.
2).線路1,並在"帶條件的結果查詢供流查詢使用" 這個結點中,用一個SQL,過濾一下數據,然後盡可能地把那裡包括的這些記錄查出來.這樣在流里的比對時.也很快很多.必竟是在內存里做運算了
2. 查另一個資料庫的數據量大時,而你的源數據不大.
最好的選擇是
線路1,並在"帶條件的結果查詢供流查詢使用" 這個結點中,用一個SQL,過濾一下數據,然後盡可能地把那裡包括的這些記錄查出來.這樣在流里的比對時.也很快很多.必竟是在內存里做運算了
3. 當兩個數據源都非常大時(最不想遇到的)
這種情況是最不想遇到的辦法
一種選擇:
1).線路2中的 "使用緩存" 打勾.
當然還有別的更復雜但是會更快的辦法.適用場景比較少,不再詳細寫了.
3. 通過取出kettle日誌里過濾數據的條數來記錄,java有這樣的包嗎
這個我沒遇到過。不過可以這樣:你在kettle里做個過濾,吧過濾出的數據單獨寫到 txt或者數據表裡,然後 java調 ktr ,然後開個線程 掃描過濾的數據。
4. 我不太明白,kettle抽取這種文本里的數據,想要得到姓名,性別等數據,我應該怎麼獲取欄位
Kettle 的幾個子程序的功能和啟動方式
Spoon.bat: 圖形界面方式啟動作業和轉換設計器。
Pan.bat: 命令行方式執行轉換。
Kitchen.bat: 命令行方式執行作業。
Carte.bat: 啟動web服務,用於 Kettle 的遠程運行或集群運行。
Encr.bat: 密碼加密
(請注意這里各個文件的名字,很有趣,類似於hadoop中的名字,這也許是屬於國外程序猿的一種幽默吧)
轉換和作業
Kettle 的 Spoon 設計器用來設計轉換(Transformation)和 作業(Job)。
轉換主要是針對數據的各種處理,一個轉換里可以包含多個步驟(Step)。
作業是比轉換更高一級的處理流程,一個作業里包括多個作業項(Job Entry),一個作業項代表了一項工作,轉換也是一個作業項。
操作界面如下
保存作業
用戶通過 Spoon 創建的轉換、作業、資料庫連接等可
以保存在資源庫和 XML 文件中。
轉換文件以ktr為擴展名,作業文件以kjb為擴展名
資源庫可以是各種常見的資料庫。可以在Spoon中自動創建資源庫,資源庫默認用戶名和密碼是admin/admin。
輸入步驟簡介
輸入類步驟用來從外部獲取數據,可以獲取數據的數據源包括,文本文件(txt,csv,xml,json)資料庫、 Excel 文件等桌面文件,自定義的數據等。對特殊數據源和應用需求可以自定義輸入插件。
輸入內容部分截圖如下:
轉換步驟簡介
轉換類步驟是對數據進行各種形式轉換所用到的步驟。
例子:
-欄位選擇(就比如我們我負責的現在我們公司的資料庫轉移工作,欄位選擇很重要)
-計算器
-增加常量
流程步驟簡介
流程步驟是用來控制數據流的步驟。一般不對數據進行操作,只是控制數據流。
例子:
過濾步驟
輸出步驟簡介
既然有輸入和過濾,那麼一定也要有輸出了。輸出步驟是輸出數據的步驟,常見的輸出包括文本文件輸出、表輸出等,可以根據應用的需求開發插件以其他形式輸出。
例子:
表輸出等,如下圖
總結
5. 請教李傲老師,關於KETTLE中中的in list 方法的使用
方式。分為三種:無條件,成功,失敗,為了方便工作流使用,KETTLE提供了幾個輔助結點單... listdir : List the dir...些默認的配置(如資料庫存儲位置…),在系統的用戶目錄下,單獨建立了一個.Kettle目錄... List the directories in t
6. 請教李傲老師,關於KETTLE中中的in list 方法的使用
看了一下時間,雖然很晚了,不過我也遇到了,跟你分享一下。我查了網上很多資料,相信你也看了,但問題還是沒有解決。
最後無意之間把ojdbc14.jar的包換成了ojdbc6.jar,問題解決了。
具體原因不知道,沒有深究這兩個報的區別。你可以試試。就是不知道你的是不是這個問題。
7. 請教李傲老師,關於KETTLE中中的in list 方法的使用
in list beijing;shanghai
分號分隔即可
8. kettle怎麼過濾掉某個欄位空字元串數據
利用Kettle的「過濾記錄」
字元串替換」,「字元串操作」組件,實現記錄的過濾,字元串替換及字元串的去空格功能。
9. kettle 怎麼根據時間欄位進行過濾
今天使用kettle從mysql導數到oracle,發現只導了7行後,數據傳輸就終止了,查看日誌信息,報內錯如下容:
image
報:Couldn't get row from result set問題。
發現從這行開始這個時間欄位除了正常的時間數據以外還有NULL值,難道這類的值引起的錯誤,在查詢了相關資料後,才知道jdbc(默認行為)認為null或'0000-00-00'這樣的日期時間值是無效的。如果想避開這個問題,需要編輯jdbc的連接屬性,添加如下屬性值:
zeroDateTimeBehavior=convertToNull
image
設置之後導數成功進行。
image
所以,設計生產系統中的相關表時,默認值最好不要使用'0000-00-00'或null這樣的值。