| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
前言:
为什么要用Kettle和KETTLE JAVA API?
网管网www.bitscn.com
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用户界面。 网管网www.bitscn.com
KETTLE JAVA API 实战操作记录:
网管下载dl.bitscn.com
一、 搭建环境 :到http://www.kettle.be网站下载kettle的源码包,加压缩,例如解压缩到d:\kettle目录
网管u家u.bitscn@com
二、 打开eclipse,新建一个项目,要使用jdk1.5.0,因为kettle的要使用System.getenv(),只有在jdk1.5.0才被支持。提起getenv(),好像有一段几起几落的记录,曾一度被抛弃,现在又被jdk1.5支持了。
网管网www_bitscn_com
三、 建一个class : TransBuilder.java,可以把d:\kettle\ extra\TransBuilder.java的内容原样拷贝到你的TransBuilder.java里。 网管网www_bitscn_com
四、 根据需要编辑源码。并需要对原程序进行如下修改,在头部增加:
网管u家u.bitscn@com
import org.eclipse.swt.dnd.Transfer;
//这个包被遗漏了,原始位置kettle根目录 \libswt\win32\swt.jar 网管网www_bitscn_com
//add by chq(www.chq.name) on 2006.07.20 网管联盟bitsCN@com
(后来发现,不必加这个引用,因为编译时不需要)
五、 编译准备,在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 中国网管联盟bitsCN.com
(注意 :下面这个包被遗漏了,要加上。原始位置kettle根目录\libswt\win32\swt.jar) 网管联盟bitsCN@com
\libswt\win32\swt.jar 中国网管论坛bbs.bitsCN.com
六、 编译成功后,准备运行 中国网管论坛bbs.bitsCN.com
为使程序不必登陆就可以运行,需要设置环境署文件:kettle.properties,位置在用户目录里,一般在 \Documents and Settings\用户\.kettle\,主要内容如下: 网管网www_bitscn_com
网管联盟bitsCN_com
KETTLE_USER=admin 网管网www.bitscn.com
KETTLE_PASSWORD=passwd 中国网管联盟bitsCN.com
七、 好了,现在可以运行一下了,看看数据是不是已经拷贝到目标表了。 中国网管联盟bitsCN.com
网管u家u.bitsCN.com
以下为修改后的程序源码:
++++++++++++++++++++++++++++++++ 中国网管论坛bbs.bitsCN.com
package name.chq.test; 网管bitscn_com
网管网www_bitscn_com
import java.io.DataOutputStream; 中国网管论坛bbs.bitsCN.com
import java.io.File;
import java.io.FileOutputStream;
网管下载dl.bitscn.com
import be.ibridge.kettle.core.Const;
网管联盟bitsCN@com
import be.ibridge.kettle.core.LogWriter;
网管bitscn_com
import be.ibridge.kettle.core.NotePadMeta;
import be.ibridge.kettle.core.database.Database;
import be.ibridge.kettle.core.database.DatabaseMeta; 网管u家u.bitscn@com
import be.ibridge.kettle.core.exception.KettleException; 网管论坛bbs_bitsCN_com
import be.ibridge.kettle.core.util.EnvUtil; 中国网管联盟bitsCN.com
import be.ibridge.kettle.trans.StepLoader;
网管论坛bbs_bitsCN_com
import be.ibridge.kettle.trans.Trans;
网管u家u.bitscn@com
import be.ibridge.kettle.trans.TransHopMeta;
import be.ibridge.kettle.trans.TransMeta; 网管联盟bitsCN@com
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;
网管网www_bitscn_com
import be.ibridge.kettle.trans.step.tableoutput.TableOutputMeta; 网管网www_bitscn_com
网管网www_bitscn_com
网管u家u.bitscn@com
//这个包被遗漏了,原始位置kettle根目录\libswt\win32\swt.jar
//add by chq([link=http://www.chq.name]www.chq.name[/link]) on 2006.07.20
网管网www.bitscn.com
//import org.eclipse.swt.dnd.Transfer; 中国网管论坛bbs.bitsCN.com
/**
* Class created to demonstrate the creation of transformations on-the-fly.
* 网管联盟bitsCN@com
* @author Matt
中国网管联盟bitsCN.com
* 网管联盟bitsCN_com
*/ 网管网www.bitscn.com
public class TransBuilder 网管论坛bbs_bitsCN_com
{ 网管联盟bitsCN_com
public static final String[] databasesXML = { 网管论坛bbs_bitsCN_com
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + 网管u家u.bitscn@com
"<connection>" +
中国网管论坛bbs.bitsCN.com
"<name>target</name>" +
网管联盟bitsCN_com
"<server>192.168.17.35</server>" + 网管联盟bitsCN@com
"<type>ORACLE</type>" + 网管bitscn_com
"<access>Native</access>" + 网管联盟bitsCN@com
"<database>test1</database>" +
网管下载dl.bitscn.com
"<port>1521</port>" +
"<username>testuser</username>" + 网管联盟bitsCN_com
"<password>pwd</password>" +
网管u家u.bitscn@com
"<servername/>" +
网管u家u.bitscn@com
"<data_tablespace/>" + 网管网www_bitscn_com
"<index_tablespace/>" +
"<attributes>" + 网管bitscn_com
"<attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>" + 网管网www_bitscn_com
"<attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>" +
"<attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>" + 中国网管论坛bbs.bitsCN.com
"</attributes>" +
网管u家u.bitsCN.com
"</connection>" ,
网管网www.bitscn.com
中国网管论坛bbs.bitsCN.com
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<connection>" + 网管网www.bitscn.com
"<name>source</name>" + 网管u家u.bitscn@com
"<server>192.168.16.12</server>" + 网管论坛bbs_bitsCN_com
"<type>ORACLE</type>" + 网管下载dl.bitscn.com
"<access>Native</access>" + 中国网管联盟bitsCN.com
"<database>test2</database>" +
网管联盟bitsCN_com
"<port>1521</port>" +
网管联盟bitsCN_com
"<username>testuser</username>" + 网管u家u.bitsCN.com
"<password>pwd2</password>" + 网管网www.bitscn.com
"<servername/>" +
"<data_tablespace/>" +
网管u家u.bitscn@com
"<index_tablespace/>" + 网管网www.bitscn.com
"<attributes>" + 网管u家u.bitsCN.com
"<attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>" + 网管网www_bitscn_com
"<attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>" + 中国网管论坛bbs.bitsCN.com
"<attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>" +
网管网www.bitscn.com
"</attributes>" + 网管论坛bbs_bitsCN_com
"</connection>" 网管论坛bbs_bitsCN_com
};
网管下载dl.bitscn.com
|
0
|
评论加载中…