Kettle開發之常用步驟開發

2021-07-26 10:39:09 字數 4577 閱讀 8718

csv 輸入對應的**如下所示:

csvinputmeta csvinputmeta = new csvinputmeta();

csvinputmeta.setdefault();

csvinputmeta.setdelimiter(",");

csvinputmeta.setfilename("/etl/data.csv");

csvinputmeta.setheaderpresent(true);

string headers = ;//設定頭部資訊

textfileinputfield textfileinputfields = new textfileinputfield[headers.length];

for(int i=0

;i textfileinputfields[i] = new textfileinputfield();

textfileinputfields[i].setname(headers[i]);

} csvinputmeta.setinputfields(textfileinputfields);

pluginregistry registry = pluginregistry.getinstance();

string textid = registry.getpluginid(stepplugintype.class,csvinputmeta);

stepmeta csvstepmeta = new stepmeta(textid,"csvinput",csvinputmeta);

1.2 資料庫表的輸入

資料庫表輸入的對應**如下:

//第乙個表輸入步驟(tableinputmeta)

tableinputmeta tableinput = new tableinputmeta();

string tableinputpluginid = registry.getpluginid(stepplugintype.class, tableinput);

//給表輸入新增乙個databasemeta連線資料庫

databasemeta database_bjdt = transmeta.finddatabase("bjdt");

tableinput.setdatabasemeta(database_bjdt);

string select_sql = "select name from "+bjdt_tablename;

tableinput.setsql(select_sql);

//新增tableinputmeta到轉換中

stepmeta tableinputmetastep = new stepmeta(tableinputpluginid,"table input",tableinput);

uniquerowsmeta uniquerowsmeta = new uniquerowsmeta();

uniquerowsmeta.setdefault();

uniquerowsmeta.setcomparefields(cpmarefields);

uniquerowsmeta.setcaseinsensitive(new boolean);

string uniqueid = registry.getpluginid(stepplugintype.class,uniquerowsmeta);

stepmeta uniquestepmeta = new stepmeta(uniqueid,"",uniquerowsmeta);

sortrowsmeta sortrowsmeta = new sortrowsmeta();

sortrowsmeta.setdefault();

sortrowsmeta.allocate(1);

sortrowsmeta.setfieldname(sortfields);

sortrowsmeta.setcasesensitive(new

boolean);//是否區分大小寫

sortrowsmeta.setascending(new

boolean);//是否是公升序排序 a-z

string sortid = registry.getpluginid(stepplugintype.class,sortrowsmeta);

stepmeta sortstepmeta = new stepmeta(sortid,"sort step",sortrowsmeta);

addsequencemeta addsequencemeta = new addsequencemeta();

string addsequencepluginid = registry.getpluginid( stepplugintype.class, addsequencemeta );

addsequencemeta.setdefault();

addsequencemeta.setmaxvalue(100);

addsequencemeta.setvaluename( "counter" );

addsequencemeta.setcountername( "counter_1" );

addsequencemeta.setstartat( 1 );

addsequencemeta.setmaxvalue( long.max_value );

addsequencemeta.setincrementby( 1 );

stepmeta addsequencestepmeta = new stepmeta( addsequencepluginid, "add counter field", addsequencemeta );

3.1 excel 輸出

exceloutputmeta exceloutputmeta = new exceloutputmeta();

string exceloutid=registry.getpluginid(stepplugintype.class, exceloutputmeta);

exceloutputmeta.setdefault();

exceloutputmeta.setcreateparentfolder(true);

exceloutputmeta.setfilename("etl/ceshiexce2");

exceloutputmeta.setheaderenabled(true);

stepmeta stepmeta2 = new stepmeta(exceloutid, "exceloutput", exceloutputmeta);

3.2 資料庫輸出

insertupdatemeta insertupdatemeta = new insertupdatemeta();

string insertupdatemetapluginid = registry.getpluginid(stepplugintype.class,insertupdatemeta);

//新增資料庫連線

databasemeta database_kettle = transmeta.finddatabase("kettle");

insertupdatemeta.setdatabasemeta(database_kettle);

//設定操作的表

insertupdatemeta.settablename(kettle_tablename);

//設定用來查詢的關鍵字

insertupdatemeta.setkeylookup(new

string);

insertupdatemeta.setkeystream(new

string);

insertupdatemeta.setkeystream2(new

string);//一定要加上

insertupdatemeta.setkeycondition(new

string);

//設定要更新的字段

string updatestream = ;//獲取keystream傳遞的值

string updatelookup = ;//對應資料庫中的欄位名

boolean updateornot = ;

insertupdatemeta.setupdatelookup(updatelookup);

insertupdatemeta.setupdatestream(updatestream);

insertupdatemeta.setupdate(updateornot);

string lookup = insertupdatemeta.getupdatelookup();

insertupdatemeta.setkeylookup(lookup);

//新增步驟到轉換中

stepmeta insertupdatestep = new stepmeta(insertupdatemetapluginid,"insert_update",insertupdatemeta);

kettle 外掛程式開發

kettle core kettle的核心模組,包括一些資料處理等。kettle dbdialog kettle資料庫連線介面邏輯。kettle engine kettle的引擎,負責執行kettle的具體作業和轉換的邏輯,並會呼叫core模組。kettle ui swt 使用者介面模組,包括使用者...

Kettle開發流程

回到啟動介面 注意 建立資源庫時不要使用中文 因為在配置資源庫時使用中文,可能導致repositories.xml出現亂碼。然後導致你為了解決connect按鈕不見的問題不斷的刪除檔案重啟kettle。同時,也是會發現,我們的資料庫裡面有很多資料庫已經建立好了 2.簡單demo 在目標庫中新建一張表...

Kettle外掛程式開發(Job)

乙個 kettle 的job 外掛程式主要包括兩個類,和轉換步驟外掛程式一樣,乙個是用於客戶端定義引數配置的 ui dialog 類,乙個是 job entry 類,主要是跟蹤儲存客戶的配置資訊和執行 job具體的功能 在 execute 方法中執行 1 ui dialog類。ui dailog 類...