/**
* Kettle 4.2.0 版本测试通过
*/
package zhangxin.test;
import java.util.List;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.plugins.PluginRegistry;
import org.pentaho.di.core.plugins.RepositoryPluginType;
import org.pentaho.di.repository.ObjectId;
import org.pentaho.di.repository.RepositoriesMeta;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.repository.RepositoryElementMetaInterface;
import org.pentaho.di.repository.RepositoryMeta;
import org.pentaho.di.repository.StringObjectId;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
/**
* 登陆资源库,获取模型,运行
*
* @author zhangxin
*
*/
public class TestRepository {
/**
* @param args
* @throws KettleException
*/
public static void main(String[] args) throws KettleException {
// 运行环境初始化(设置主目录、注册必须的插件等)
KettleEnvironment.init();
RepositoriesMeta repositoriesMeta = new RepositoriesMeta();
// 从文件读取登陆过的资源库信息
repositoriesMeta.readData();
// 选择登陆过的资源库
RepositoryMeta repositoryMeta = repositoriesMeta.findRepository("4_2");
// 获得资源库实例
Repository repository = PluginRegistry.getInstance().loadClass(RepositoryPluginType.class, repositoryMeta.getId(), Repository.class);
repository.init(repositoryMeta);
// 连接资源库
repository.connect("admin", "admin");
ObjectId id = new StringObjectId("0");
// 获取某个资源库的所有转换
List<RepositoryElementMetaInterface> li = repository.getTransformationObjects(id, false);
TransMeta transMeta = null;
if (li != null) {
for (RepositoryElementMetaInterface repe : li) {
System.out.println("TRANSFORMATION:" + repe.getObjectId() + "name:" + repe.getName());
TransMeta tm = repository.loadTransformation(repe.getObjectId(), null);
if ("测试转换".equals(tm.getName())) {
transMeta = tm;
}
}
}
// 执行指定转换
Trans trans = new Trans(transMeta);
trans.execute(null);
trans.waitUntilFinished();
if (trans.getErrors() > 0) {
throw new RuntimeException("There were errors during transformation execution.");
}
repository.disconnect();
}
}
分享到:
相关推荐
Kettle,全称为Pentaho Data Integration...总之,"Kettle插件开发官方示例"是学习和实践Kettle插件开发的重要资源,通过深入研究和模仿这些示例,开发者可以提升自己的技能,更好地利用Kettle解决复杂的数据处理问题。
kettle中的Repository是存储元数据的多张数据表,在资源库模式下设计的transformation和job都会被存储在这些数据表中。为配置Repository,需要先配置Database Connection(数据库连接),填写Name和Description,...
为了更好地管理和维护转换和作业,建议创建并使用数据库类型的资源库(Kettle Database Repository)。以下是创建过程的一个示例: 1. **新建资源库**:在Spoon中选择“新建”选项,然后选择“Kettle Database ...
这个压缩包"java调用Kettle引用jar包2.zip"很可能包含了一些示例代码和必要的库文件,帮助开发者学习如何在Java项目中调用Kettle。 首先,我们需要理解Kettle的核心组件:Job和Transformation。Job是一系列步骤的...
如果你遇到任何问题,可以参考这个示例,或者查看Kettle官方文档和社区论坛获取更多帮助。 总之,通过Java调用Kettle的Job与转换,我们可以将数据处理逻辑与业务逻辑紧密结合,实现更加灵活和可扩展的数据集成解决...
- **加载资源库**:使用`KettleFileRepository`类连接到Kettle资源库。 ```java private KettleFileRepository fileRepositoryCon() throws KettleException { KettleFileRepository repository = new ...
### 新建数据库资源库知识点详解 #### 一、Kettle简介 Kettle是一款开源的数据集成工具,主要用于数据清洗和加载(ETL),它提供了一种图形化的操作方式来进行数据处理任务的设计与执行。 #### 二、环境配置 #####...
Java程序生成Kettle转换(KTR)文件是一个技术性较强的话题,主要涉及到Java编程语言、Kettle(也称为Pentaho Data Integration,PDI)工具以及可能的资源文件管理。Kettle是一种开源的数据集成工具,它允许用户通过...
总的来说,Java调用Kettle任务的关键在于正确配置Kettle环境,加载资源库和作业/转换元数据,以及正确执行和管理转换或作业的生命周期。这个过程允许你在Java应用中灵活地集成Kettle的ETL能力,实现数据处理的自动化...
- Kettle的整体结构包括多个组件,如Repository(资源库)、Spoon(图形化设计工具)、Pan/Pentaho Data Extractor(用于数据抽取)、Kitchen(用于启动转换和作业)、Carte(服务器端的执行引擎)等。 ##### 2. ...
- **7**: 无法从资源库或 XML 中加载转换。 - **8**: 加载步骤或插件错误。 - **9**: 命令行用法错误。 通过 Kitchen 和 Pan,用户可以方便地在命令行环境中执行和管理 Kettle 数据集成任务,实现数据处理流程的...
#### 第4章:示例ETL解决方案——Sakila - **Sakila案例介绍**:介绍了一个名为Sakila的示例数据库,用作演示ETL过程的实际案例。 - **先决条件与基本技能**:列出进行本章示例前需要掌握的基本条件和技能。 - **...
《PDI SDK Plugins详解:构建Kettle扩展的实践指南...通过学习和实践这些示例,开发者不仅可以提升自己的技能,还能为PDI社区贡献自己的力量,开发出更多实用且高效的插件,丰富PDI的功能库,推动数据集成领域的发展。