KETTLE+JAVA+API+开发实战记录 下载本文

前言:

为什么要用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\\ extra\\TransBuilder.java的内容原样拷贝到你的TransBuilder.java里。

四、 根据需要编辑源码。并需要对原程序进行如下修改,在头部增加: import org.eclipse.swt.dnd.Transfer;

//这个包被遗漏了,原始位置kettle根目录 \\libswt\\win32\\swt.jar //add by chq(www.chq.name) on 2006.07.20

(后来发现,不必加这个引用,因为编译时不需要)

五、 编译准备,在eclipse中增加jar包,主要包括(主要依据extra\\TransBuilder.bat):

\\lib\\kettle.jar

\\libext\\CacheDB.jar

\\libext\\SQLBaseJDBC.jar \\libext\\activation.jar \\libext\\db2jcc.jar

\\libext\\db2jcc_license_c.jar \\libext\\edtftpj-1.4.5.jar \\libext\\firebirdsql-full.jar \\libext\\firebirdsql.jar \\libext\\gis-shape.jar \\libext\\hsqldb.jar

\\libext\\ifxjdbc.jar \\libext\\javadbf.jar \\libext\\jconn2.jar \\libext\\js.jar \\libext\\jt400.jar \\libext\\jtds-1.1.jar \\libext\\jxl.jar \\libext\\ktable.jar \\libext\\log4j-1.2.8.jar \\libext\\mail.jar

\\libext\\mysql-connector-java-3.1.7-bin.jar \\libext\\ojdbc14.jar \\libext\\orai18n.jar

\\libext\\pg74.215.jdbc3.jar \\libext\\edbc.jar

(注意 :下面这个包被遗漏了,要加上。原始位置kettle根目录\\libswt\\win32\\swt.jar)

\\libswt\\win32\\swt.jar

六、 编译成功后,准备运行

为使程序不必登陆就可以运行,需要设置环境署文件:kettle.properties,位置在用户目录里,一般在 \\Documents and Settings\\用户\\.kettle\\,主要内容如下:

KETTLE_REPOSITORY=kettle@m80

KETTLE_USER=admin

KETTLE_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根目录\\libswt\\win32\\swt.jar

//add by chq([link=http://www.chq.name]www.chq.name[/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 = {

\

\

\

\

\

\

\

\

\

\