已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前言: 为什么要用Kettle和KETTLE JAVA API?Kettle是什么?kettle:是一个开源ETL工具。kettle提供了基于java的图形化界面,使用很方便,kettle的ETL工具集合也比较多,常用的ETL工具都包含了。为什么使用KETTLE JAVA API:就像kettle文档所说:KETTLE JAVA API : Program your own Kettle transformation,kettle提供了基于JAVA的脚步编写功能,可以灵活地自定义ETL过程,使自行定制、批量处理等成为可能,这才是一个程序员需要做的工作,而不仅是象使用word一样操作kettle用户界面。KETTLE JAVA API 实战操作记录:一、 搭建环境 :到http:/www.kettle.be网站下载kettle的源码包,加压缩,例如解压缩到d:kettle目录二、 打开eclipse,新建一个项目,要使用jdk1.5.0,因为kettle的要使用System.getenv(),只有在jdk1.5.0才被支持。提起getenv(),好像有一段几起几落的记录,曾一度被抛弃,现在又被jdk1.5支持了。三、 建一个class : TransBuilder.java,可以把d:kettle extraTransBuilder.java的内容原样拷贝到你的TransBuilder.java里。四、 根据需要编辑源码。并需要对原程序进行如下修改,在头部增加:import org.eclipse.swt.dnd.Transfer;/这个包被遗漏了,原始位置kettle根目录libswtwin32swt.jar/add by chq() on 2006.07.20(后来发现,不必加这个引用,因为编译时不需要)五、 编译准备,在eclipse中增加jar包,主要包括(主要依据extraTransBuilder.bat):libkettle.jarlibextCacheDB.jarlibextSQLBaseJDBC.jarlibextactivation.jarlibextdb2jcc.jarlibextdb2jcc_license_c.jarlibextedtftpj-1.4.5.jarlibextfirebirdsql-full.jarlibextfirebirdsql.jarlibextgis-shape.jarlibexthsqldb.jarlibextifxjdbc.jarlibextjavadbf.jarlibextjconn2.jarlibextjs.jarlibextjt400.jarlibextjtds-1.1.jarlibextjxl.jarlibextktable.jarlibextlog4j-1.2.8.jarlibextmail.jarlibextmysql-connector-java-3.1.7-bin.jarlibextojdbc14.jarlibextorai18n.jarlibextpg74.215.jdbc3.jarlibextedbc.jar(注意 :下面这个包被遗漏了,要加上。原始位置kettle根目录libswtwin32swt.jar)libswtwin32swt.jar六、 编译成功后,准备运行为使程序不必登陆就可以运行,需要设置环境署文件:perties,位置在用户目录里,一般在 Documents and Settings用户.kettle,主要内容如下:KETTLE_REPOSITORY=kettlem80KETTLE_USER=adminKETTLE_PASSWORD=passwd七、 好了,现在可以运行一下了,看看数据是不是已经拷贝到目标表了。 以下为修改后的程序源码:-package name.chq.test; import java.io.DataOutputStream;import java.io.File;import java.io.FileOutputStream; import be.ibridge.kettle.core.Const;import be.ibridge.kettle.core.LogWriter;import be.ibridge.kettle.core.NotePadMeta;import be.ibridge.kettle.core.database.Database;import be.ibridge.kettle.core.database.DatabaseMeta;import be.ibridge.kettle.core.exception.KettleException;import be.ibridge.kettle.core.util.EnvUtil;import be.ibridge.kettle.trans.StepLoader;import be.ibridge.kettle.trans.Trans;import be.ibridge.kettle.trans.TransHopMeta;import be.ibridge.kettle.trans.TransMeta;import be.ibridge.kettle.trans.step.StepMeta;import be.ibridge.kettle.trans.step.StepMetaInterface;import be.ibridge.kettle.trans.step.selectvalues.SelectValuesMeta;import be.ibridge.kettle.trans.step.tableinput.TableInputMeta;import be.ibridge.kettle.trans.step.tableoutput.TableOutputMeta; /这个包被遗漏了,原始位置kettle根目录libswtwin32swt.jar/add by chq(link=/link) on 2006.07.20/import org.eclipse.swt.dnd.Transfer; /* * Class created to demonstrate the creation of transformations on-the-fly. * * author Matt * */public class TransBuilder public static final String databasesXML = + + target + 5 + ORACLE + Native + test1 + 1521 + testuser + pwd + + + + + EXTRA_OPTION_MYSQL.defaultFetchSize500 + EXTRA_OPTION_MYSQL.useCursorFetchtrue + PORT_NUMBER1521 + + , + + source + 2 + ORACLE + Native + test2 + 1521 + testuser + pwd2 + + + + + EXTRA_OPTION_MYSQL.defaultFetchSize500 + EXTRA_OPTION_MYSQL.useCursorFetchtrue + PORT_NUMBER1521 + + ;前言:为什么要用Kettle和KETTLE JAVA API?Kettle是什么?kettle:是一个开源ETL工具。kettle提供了基于java的图形化界面,使用很方便,kettle的ETL工具集合也比较多,常用的ETL工具都包含了。为什么使用KETTLE JAVA API:就像kettle文档所说:KETTLE JAVA API : Program your own Kettle transformation,kettle提供了基于JAVA的脚步编写功能,可以灵活地自定义ETL过程,使自行定制、批量处理等成为可能,这才是一个程序员需要做的工作,而不仅是象使用word一样操作kettle用户界面。KETTLE JAVA API 实战操作记录:一、 搭建环境 :到http:/www.kettle.be网站下载kettle的源码包,加压缩,例如解压缩到d:kettle目录二、 打开eclipse,新建一个项目,要使用jdk1.5.0,因为kettle的要使用System.getenv(),只有在jdk1.5.0才被支持。提起getenv(),好像有一段几起几落的记录,曾一度被抛弃,现在又被jdk1.5支持了。三、 建一个class : TransBuilder.java,可以把d:kettle extraTransBuilder.java的内容原样拷贝到你的TransBuilder.java里。四、 根据需要编辑源码。并需要对原程序进行如下修改,在头部增加:import org.eclipse.swt.dnd.Transfer;/这个包被遗漏了,原始位置kettle根目录libswtwin32swt.jar/add by chq() on 2006.07.20(后来发现,不必加这个引用,因为编译时不需要)五、 编译准备,在eclipse中增加jar包,主要包括(主要依据extraTransBuilder.bat):libkettle.jarlibextCacheDB.jarlibextSQLBaseJDBC.jarlibextactivation.jarlibextdb2jcc.jarlibextdb2jcc_license_c.jarlibextedtftpj-1.4.5.jarlibextfirebirdsql-full.jarlibextfirebirdsql.jarlibextgis-shape.jarlibexthsqldb.jarlibextifxjdbc.jarlibextjavadbf.jarlibextjconn2.jarlibextjs.jarlibextjt400.jarlibextjtds-1.1.jarlibextjxl.jarlibextktable.jarlibextlog4j-1.2.8.jarlibextmail.jarlibextmysql-connector-java-3.1.7-bin.jarlibextojdbc14.jarlibextorai18n.jarlibextpg74.215.jdbc3.jarlibextedbc.jar(注意 :下面这个包被遗漏了,要加上。原始位置kettle根目录libswtwin32swt.jar)libswtwin32swt.jar六、 编译成功后,准备运行为使程序不必登陆就可以运行,需要设置环境署文件:perties,位置在用户目录里,一般在 Documents and Settings用户.kettle,主要内容如下:KETTLE_REPOSITORY=kettlem80KETTLE_USER=adminKETTLE_PASSWORD=passwd七、 好了,现在可以运行一下了,看看数据是不是已经拷贝到目标表了。 以下为修改后的程序源码:package name.chq.test; import java.io.DataOutputStream;import java.io.File;import java.io.FileOutputStream; import be.ibridge.kettle.core.Const;import be.ibridge.kettle.core.LogWriter;import be.ibridge.kettle.core.NotePadMeta;import be.ibridge.kettle.core.database.Database;import be.ibridge.kettle.core.database.DatabaseMeta;import be.ibridge.kettle.core.exception.KettleException;import be.ibridge.kettle.core.util.EnvUtil;import be.ibridge.kettle.trans.StepLoader;import be.ibridge.kettle.trans.Trans;import be.ibridge.kettle.trans.TransHopMeta;import be.ibridge.kettle.trans.TransMeta;import be.ibridge.kettle.trans.step.StepMeta;import be.ibridge.kettle.trans.step.StepMetaInterface;import be.ibridge.kettle.trans.step.selectvalues.SelectValuesMeta;import be.ibridge.kettle.trans.step.tableinput.TableInputMeta;import be.ibridge.kettle.trans.step.tableoutput.TableOutputMeta; /这个包被遗漏了,原始位置kettle根目录libswtwin32swt.jar/add by chq(link=/link) on 2006.07.20/import org.eclipse.swt.dnd.Transfer; /* * Class created to demonstrate the creation of transformations on-the-fly. * * author Matt * */public class TransBuilder public static final String databasesXML = + + target + 5 + ORACLE + Native + test1 + 1521 + testuser + pwd + + + + + EXTRA_OPTION_MYSQL.defaultFetchSize500 + EXTRA_OPTION_MYSQL.useCursorFetchtrue + PORT_NUMBER1521 + + , + + source + 2 + ORACLE + Native + test2 + 1521 + testuser + pwd2 + + + + + EXTRA_OPTION_MYSQL.defaultFetchSize500 + EXTRA_OPTION_MYSQL.useCursorFetchtrue + PORT_NUMBER1521 + + ;/ / create the source step. / String fromstepname = read from + sourceTableName + ; TableInputMeta tii = new TableInputMeta(); tii.setDatabaseMeta(sourceDBInfo); String selectSQL = SELECT +Const.CR; for (int i=0;i0) selectSQL+=, ; else selectSQL+= ; selectSQL+=sourceFieldsi+Const.CR; selectSQL+=FROM +sourceTableName; tii.setSQL(selectSQL); StepLoader steploader = StepLoader.getInstance(); String fromstepid = steploader.getStepPluginID(tii); StepMeta fromstep = new StepMeta(log, fromstepid, fromstepname, (StepMetaInterface) tii); fromstep.setLocation(150, 100); fromstep.setDraw(true); fromstep.setDescription(Reads information from table + sourceTableName + on database + sourceDBInfo + ); transMeta.addStep(fromstep); / / add logic to rename fields / Use metadata logic in SelectValues, use SelectValueInfo. / /* 不必改名或映射 add by chq() on 2006.07.20 SelectValuesMeta svi = new SelectValuesMeta(); svi.allocate(0, 0, sourceFields.length); for (int i = 0; i sourceFields.length; i+) svi.getMetaName()i = sourceFieldsi; svi.getMetaRename()i = targetFieldsi; String selstepname = Rename field names; String selstepid = steploader.getStepPluginID(svi); StepMeta selstep = new StepMeta(log, selstepid, selstepname, (StepMetaInterface) svi); selstep.setLocation(350, 100); selstep.setDraw(true); selstep.setDescription(Rename field names); transMeta.addStep(selstep); TransHopMeta shi = new TransHopMeta(fromstep, selstep); transMeta.addTransHop(shi); fromstep = selstep; /设定了新的起点 by chq(link=/link) on 2006.07.20 */ / / Create the target step. / / / Add the TableOutputMeta step. / String tostepname = write to + targetTableName + ; TableOutputMeta toi = new TableOutputMeta(); toi.setDatabase(targetDBInfo); toi.setTablename(targetTableName); toi.setCommitSize(200); toi.setTruncateTable(true); String tostepid = steploader.getStepPluginID(toi); StepMeta tostep = new StepMeta(log, tostepid, tostepname, (StepMetaInterface) toi); tostep.setLocation(550, 100); tostep.setDraw(true); tostep.setDescription(Write information to table + targetTableName + on database + targetDBInfo + ); transMeta.addStep(tostep); / / Add a hop between the two steps. / TransHopMeta hi = new TransHopMeta(fromstep, tostep); transMeta.addTransHop(hi);/ OK, if were still here: overwrite the current transformation. return transMeta; catch (Exception e) throw new KettleException(An unexpected error occurred creating the new transformation, e); /* * 1) create a new transformation * 2) save the transformation as XML file * 3) generate the SQL for the target table * 4) Execute the transformation * 5) drop the target table to make this program repeatable * * param args */ public static void main(String args) throws Exception EnvUtil.environmentInit(); / Init the logging. LogWriter log = LogWriter.getInstance(TransBuilder.log, true, LogWriter.LOG_LEVEL_DETAILED); / Load the Kettle steps & plugins StepLoader stloader = StepLoader.getInstance(); if (!stloader.read() log.logError(TransBuilder, Error loading Kettle steps & plugins. stopping now!); return; / The parameters we want, optionally this can be String fileName = NewTrans.xml; String transformationName = Test Transformation; String sourceDatabaseName = source; String sourceTableName = testuser.source_table; String sourceFields = * ; String targetDatabaseName = target; String targetTableName = testuser.target_table; String targetFields = * ; / Generate
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 8395-2026吊环
- 2025年甲醇燃料船舶动力系统燃料纯度要求
- 护理实践操作
- 护理查房中的非语言沟通
- 河北衡水市武强中学2025-2026学年高一下学期期中考试化学试卷(含答案)
- 轧制备品工安全实操知识考核试卷含答案
- 二甲基甲酰胺装置操作工班组管理测试考核试卷含答案
- 银幕制造工安全教育强化考核试卷含答案
- 配膳员创新意识水平考核试卷含答案
- 数控刨工岗前技术突破考核试卷含答案
- 版画艺术鉴赏课件
- 【新课标】水平四(七年级)体育《田径:快速起动加速跑》教学设计及教案(附大单元教学计划18课时)
- 电力交易员基础知识培训课件
- 机械补贴协议书
- 火电精益管理办法
- 卡西欧手表5123机芯中文使用说明书
- 小学信息技术课件一等奖
- 实习律师培训结业考试题目及答案
- 蛛网膜下腔出血疑难病例讨论
- 根管治疗技术指南
- GB/T 42231-2022综合客运枢纽通用要求
评论
0/150
提交评论