「kettlejava代码」kettle开源

博主:adminadmin 2022-12-13 15:18:09 73

本篇文章给大家谈谈kettlejava代码,以及kettle开源对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

怎么用java程序调用kettle产生的ktr文件

都可运行,非图形界面运行可减少图形界面消耗的资源,且运行方式很多种,例如图形界面运行、命令行调用运行、程序调用运行、远程机子运行(集群运行)等。

Kettle如何取得指定范围的随机数

kettle中有一个控件叫“生成随机数”,里面可以生成随机数字,随机整数,但是好像没有能指定范围的地方。

如果想实现,可以借助“java代码”来实现,以下是我的程序,经过了测试可以运行,希望对你有所帮助。

首先建立一个转换

自定义常量数据

java代码

import java.util.Random;

import java.io.File;

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws Exception

{  

Object[] r = getRow();  

if (r == null) {

setOutputDone();

return false;

}

Random rand = new Random();

int a= rand.nextInt(21)+5;

String randNum = String.valueOf(a);

get(Fields.Out, "randNum").setValue(r,randNum);

putRow(data.outputRowMeta, r);  

return true;

}

设置变量

写日志

配置完毕后运行结果

因为不知道你的范围,我程序区的范围是[5,25],因此JAVA代码中为

int a= rand.nextInt(21)+5

百度了下随机数,你的范围请根据以下规则来写

int a =rand.nextInt(MAX - MIN + 1) + MIN; // a 将被赋值为一个 MIN 和 MAX 范围内的随机数

纯人工码字测试,有财富值希望追加,谢谢采纳

kettle中java脚本怎么使用

完整例子如下:

Java代码

String firstnameField;

String lastnameField;

String nameField;

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException

{

// 获取输入

//

Object[] r = getRow();

// 输入为空,直接false

//

if (r == null) {

setOutputDone();

return false;

}

// 处于性能考虑,parameter只查一次

//

if (first) {

firstnameField = getParameter("FIRSTNAME_FIELD");

lastnameField = getParameter("LASTNAME_FIELD");

nameField = getParameter("NAME_FIELD");

first=false;

}

// 用 createOutputRow() 来保证output的数组够大,能够装下任何新的域

//

Object[] outputRow = createOutputRow(r, data.outputRowMeta.size());

String firstname = get(Fields.In, firstnameField).getString(r);

String lastname = get(Fields.In, lastnameField).getString(r);

// Set the value in the output field

//

String name = firstname+" "+lastname;

get(Fields.Out, nameField).setValue(outputRow, name);

// putRow will send the row on to the default output hop.

//

putRow(data.outputRowMeta, outputRow);

return true;

}

kettle怎么实现重复抽取更新数据

插入/更新

1.你是否遇到了需要将mysql数据库中的所有表与数据迁移到Oracle。

2.你是否还在使用kettle重复的画着:表输入-表输出、创建表,而烦恼。下面为你实现了一套通用的数据库迁移流程。技术引导:实现之初,在kettle提供的例子中找到了一个类似的(samples\jobs\processalltables)。通过相关改造,终于达到目标。实现过程解剖:整套流程分为:2个job,4个trans。使用到的Trans插件:表输入、字段选择、复制记录到结果、从结果获取记录、设置变量、自定义java脚本、表输出。1.大job。2.要迁移的源库表名称获取,并设置到结果集,为下面的job使用。

3.配置子job为前面的每一条记录(即每个表)执行一次该子job4.下面是子job。5.获取记录中的表名称,并设置为到变量。6.读取当前表的结果信息,并在目标库中创建表(这个是难点)。因为只需要获取抓取要抽取表的结构信息,故在sql后面加上where1=2。下面代码是创建目标库表。Java代码publicbooleanprocessRow(StepMetaInterfacesmi,StepDataInterfacesdi)throwsKettleException{//First,getarowfromthedefaultinputhop//Object[]r=getRow();org.pentaho.di.core.database.DatabaseMetadbmeta=null;java.util.Listlist=getTrans().getRepository().readDatabases();//3.x中获取资源库的所有数据库连接信息用getDatabases();if(list!=null!list.isEmpty()){for(inti=0;i

java 怎么设置kettle数据库

java调用kettle数据库类型资源库中的ktr

此问题在1个月前或许已经接触,单是一直木有怎么用到,就被耽搁至今;问题的解决要来源于网络,其实我还想说问题的解决更多的是要靠我们自己的思想,不过多的言情,我们接下来直接进入主题吧!

环境:kettle-spoon 4.2.0,oracle11g,myeclipse6.5,sqlserver2008

前提:在kettle图形界面spoon里面已经做好了一个ktr转换模型,此时我的ktr信息如下图:

Step1:在myeclipse创建project,导入kettle集成所需要的包

Step2:重点解析与code源码

//定义ktr名字

private static String transName = "test1";

//初始化kettle环境

KettleEnvironment.init();

//创建资源库对象,此时的对象还是一个空对象

KettleDatabaseRepository repository = new KettleDatabaseRepository();

//创建资源库数据库对象,类似我们在spoon里面创建资源库

DatabaseMeta dataMeta =

new DatabaseMeta("enfo_bi","Oracle","Native","ip","sid","port","username","password");

//资源库元对象,名称参数,id参数,描述等可以随便定义

KettleDatabaseRepositoryMeta kettleDatabaseMeta =

new KettleDatabaseRepositoryMeta("enfo_bi", "enfo_bi", "king description",dataMeta);

//给资源库赋值

repository.init(kettleDatabaseMeta);

//连接资源库

repository.connect("admin","admin");

//根据变量查找到模型所在的目录对象

RepositoryDirectoryInterface directory = repository.findDirectory("/enfo_worker/wxj");

//创建ktr元对象

TransMeta transformationMeta = ((Repository) repository).loadTransformation(transName, directory, null, true, null ) ;

//创建ktr

Trans trans = new Trans(transformationMeta);

//执行ktr

trans.execute(null);

//等待执行完毕

trans.waitUntilFinished();

上面的两个步骤才可以确定是资源库中的那个路径下的ktr和我们用命令执行一样的-dir ,-tran -job

附上源码:

package kettle;

import org.pentaho.di.core.KettleEnvironment;

import org.pentaho.di.core.database.DatabaseMeta;

import org.pentaho.di.core.exception.KettleException;

import org.pentaho.di.repository.Repository;

import org.pentaho.di.repository.RepositoryDirectoryInterface;

import org.pentaho.di.repository.kdr.KettleDatabaseRepository;

import org.pentaho.di.repository.kdr.KettleDatabaseRepositoryMeta;

import org.pentaho.di.trans.Trans;

import org.pentaho.di.trans.TransMeta;

/**

* pTitle: java调用kettle4.2数据库型资料库中的转换/p

* pDescription: /p

* pCopyright: Copyright () 2012/p

*/

public class ExecuteDataBaseRepTran {

private static String transName = "test1";

public static void main(String[] args) {

try {

//初始化kettle环境

KettleEnvironment.init();

//创建资源库对象,此时的对象还是一个空对象

KettleDatabaseRepository repository = new KettleDatabaseRepository();

//创建资源库数据库对象,类似我们在spoon里面创建资源库

DatabaseMeta dataMeta =

new DatabaseMeta("enfo_bi","Oracle","Native","ip","sid","port","username","password");

//资源库元对象,名称参数,id参数,描述等可以随便定义

KettleDatabaseRepositoryMeta kettleDatabaseMeta =

new KettleDatabaseRepositoryMeta("enfo_bi", "enfo_bi", "king description",dataMeta);

//给资源库赋值

repository.init(kettleDatabaseMeta);

//连接资源库

repository.connect("admin","admin");

//根据变量查找到模型所在的目录对象,此步骤很重要。

RepositoryDirectoryInterface directory = repository.findDirectory("/enfo_worker/wxj");

//创建ktr元对象

TransMeta transformationMeta = ((Repository) repository).loadTransformation(transName, directory, null, true, null ) ;

//创建ktr

Trans trans = new Trans(transformationMeta);

//执行ktr

trans.execute(null);

//等待执行完毕

trans.waitUntilFinished();

if(trans.getErrors()0)

{

System.err.println("Transformation run Failure!");

}

else

{

System.out.println("Transformation run successfully!");

}

} catch (KettleException e) {

e.printStackTrace();

}

}

}

kettle教程是什么?

kettle 是纯 java 开发,开源的 ETL工具,用于数据库间的数据迁移 。可以在 Linux、windows、unix 中运行。有图形界面,也有命令脚本还可以二次开发。

kettle 的官网是 ,github 地址是 。

安装。

这边以 windows 下的配置为例,linux 下配置类似。

jdk 安装及配置环境变量。

由于 kettle 是基于 java 的,因此需要安装 java 环境,并配置 JAVA_HOME 环境变量。

建议安装 JDK1.8 及以上,7.0以后版本的 kettle 不支持低版本 JDK。

下载 kettle。

从 官网 下载 kettle ,解压到本地即可。

下载相应的数据库驱动。

由于 kettle 需要连接数据库,因此需要下载对应的数据库驱动。

例如 MySQL 数据库需要下载 mysql-connector-java.jar,oracle 数据库需要下载 ojdbc.jar。下载完成后,将 jar 放入 kettle 解压后路径的 lib 文件夹中即可。

注意:本文基于 pdi-ce-7.0.0.0-25 版本进行介绍,低版本可能有区别。

启动。

双击 Spoon.bat 就能启动 kettle 。

转换。

转换包括一个或多个步骤,步骤之间通过跳(hop)来连接。跳定义了一个单向通道,允许数据从一个步骤流向另一个步骤。在Kettle中,数据的单位是行,数据流就是数据行从一个步骤到另一个步骤的移动。

1、打开 kettle,点击 文件-新建-转换。

2、在左边 DB 连接处点击新建。

3、根据提示配置数据库,配置完成后可以点击测试进行验证,这边以 MySQL 为例。

4、在左侧找到表输入(核心对象-输入-表输入),拖到右方。

5、双击右侧表输入,进行配置,选择数据源,并输入 SQL。可以点击预览进行预览数据。

6、在左侧找到插入/更新(核心对象-输出-插入/更新),拖到右方。

7、按住 Shift 键,把表输入和插入/更新用线连接起来。

8、双击插入/更新进行配置。

9、点击运行,就可以运行这一个转换。

10、运行结束后,我们可以在下方看到运行结果,其中有日志,数据预览等,我们可以看到一共读取了多少条数据,插入更新了多少数据等等。

这样就完成了一个最简单的转换,从一个表取数据,插入更新到另一个表。

作业。

如果想要定时运行这个转换,那么就要用到作业。

1、新建一个作业。

2、从左侧依次拖动 START 、转换、成功到右侧,并用线连接起来。

3、双击 START,可以配置作业的运行间隔,这边配置了每小时运行一次。

4、双击转换,选择之前新建的那个转换。

5、点击运行,就能运行这次作业,点击停止就能停止。在下方执行结果,可以看到运行的日志。

这样就完成了一个最简单的作业,每隔1小时,将源表的数据迁移到目标表。

总结:kettle 是一个非常强大的 ETL 工具,通过图形化界面的配置,可以实现数据迁移,并不用开发代码。

通过它的作业,kettle 能自动地运行转换。

kettlejava代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于kettle开源、kettlejava代码的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-13,除非注明,否则均为首码项目网原创文章,转载请注明出处。