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 類...