`
ainidehsj
  • 浏览: 135832 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Kettle模版文件简单使用示例

 
阅读更多
KETTLE版本:4.3
1.本示例效果。
  a.可以对两个库中结果相同的表进行数据迁移。
  b.可选择性把源表的字段抽取到目标表。
  c.一个模版即可完成一系列的数据抽取。
解决方案:
  定义库表迁移流程,即,《表输入->表输出》可下载附件查看。
模版所需参数:
1.源表数据连接名称(模版文件中已经保存的连接),
2.源表抽取sql,
3.目标表连接。
4.目标表名称(事先创建好)。
5.抽取sql中要入库的字段数组。
6.目标表对应源表的字段数组。

示例具体代码:

package org.pentaho.di.trans;

import java.util.List;

import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.logging.Log4jFileAppender;
import org.pentaho.di.core.logging.LogWriter;
import org.pentaho.di.trans.step.StepMeta;
import org.pentaho.di.trans.steps.tableinput.TableInputMeta;
import org.pentaho.di.trans.steps.tableoutput.TableOutputMeta;

public class TestTransMain {
	
	public static void tableToTableSimpleTemplateDemo(
			String tableInputConneName, String sql, String tableOutConnneName,
			String dest_tablename,String [] streamFields,String [] tableOutFields) throws Exception
	{
		String filename = "D:\\etl_tem\\4.3测试流程\\表输入表输出模版.ktr";
		
		String arguments[] = {};
		
		try {

			TransMeta meta = new TransMeta(filename);
			
			DatabaseMeta tableInputDbMeta = null;
			DatabaseMeta tableoutDbMeta = null;
			
			List<DatabaseMeta> list = meta.getDatabases();
			
			for(DatabaseMeta dbMeta : list)
			{
				if(dbMeta.getName().equals(tableInputConneName))
				{
					tableInputDbMeta = dbMeta;
				}
				
				if(dbMeta.getName().equals(tableOutConnneName))
				{
					tableoutDbMeta = dbMeta;
				}
				
				if(tableoutDbMeta!=null && tableInputDbMeta!=null) break;
			}

			if(tableoutDbMeta==null || tableInputDbMeta==null)
			{
				System.out.println("指定的数据源名称在模版文件中不存在!");
				
				return ;
			}
			
			StepMeta stepMeta = meta.findStep("表输入");
			
			TableInputMeta tableInput_meta = (TableInputMeta)stepMeta.getStepMetaInterface();
			tableInput_meta.setDatabaseMeta(tableInputDbMeta);
			tableInput_meta.setSQL(sql);
			
			stepMeta = meta.findStep("表输出");
			TableOutputMeta tableout_meta = (TableOutputMeta)stepMeta.getStepMetaInterface();
			tableout_meta.setDatabaseMeta(tableoutDbMeta);
			tableout_meta.setTablename(dest_tablename);
			tableout_meta.setFieldStream(streamFields);
			tableout_meta.setFieldDatabase(tableOutFields);
			
			Trans trans = new Trans(meta);
			
			trans.prepareExecution(arguments);

			trans.addTransListener(new TransAdapter() {
				public void transFinished(Trans trans) throws KettleException {
					System.out.println("流程执行完成");
				}
			});
			
			trans.startThreads();
			
			trans.waitUntilFinished();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		String tableInputConneName = "153ora";
		String sql = "SELECT  ID, NAME, SEX FROM PERSON"; 
		String tableOutConnneName = "153ora";
		String dest_tablename = "TTT_Person";
		String [] streamFields = {"ID","NAME","SEX"};
		String [] tableOutFields = {"ID","NAME","SEX"};
		
		try {
			KettleEnvironment.init();

			Log4jFileAppender fileAppender = LogWriter.createFileAppender(
					"D:\\etl_tem\\4.3测试流程\\test.log", true);
			LogWriter.getInstance().addAppender(fileAppender);
			
			tableToTableSimpleTemplateDemo(tableInputConneName, sql, tableOutConnneName, dest_tablename, streamFields, tableOutFields);
			
			fileAppender.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		System.out.println("主函数结束");
	}
}

分享到:
评论

相关推荐

    KettleAuto 从模版生成kettle文件

    模版可以视为一个基础模板,其中包含了通用的数据处理结构,而实际生成的Kettle文件则是根据特定的业务条件和数据源进行填充。例如,模版可能包含了一个从数据库读取数据,进行清洗,然后写入另一数据库的基础转换。...

    Kettle插件开发官方示例

    官方提供的Kettle插件开发示例,如"pdi-sdk-plugins-8.1.0.0-R"这个压缩包,涵盖了五种类型的插件示例,这为我们深入了解Kettle插件开发提供了宝贵的学习资源。下面将详细介绍这些类型以及它们在Kettle中的作用: 1...

    kettle生成固定格式xml示例

    一个简单的kettle生成xml例子。 使用xml jion 组件。 用于生成固定格式的xml。

    kettle 链接 mqtt 协议所需包

    4. **文档和教程**:为了帮助用户理解如何在Kettle中使用MQTT,压缩包可能包含详细的操作指南、API参考或者示例工作流,说明如何创建和配置MQTT连接,以及如何在ETL过程中使用MQTT数据源和目标。 5. **示例项目**:...

    《示例学习kettle之Excel Writer步骤》博客文章示例

    本篇博客文章“示例学习kettle之Excel Writer步骤”聚焦于如何使用Kettle中的Excel Writer步骤来生成或更新Excel文件。 Excel Writer是Kettle中的一个重要组件,它允许我们以Excel格式导出数据,这对于数据报告、...

    kettle 转换示例

    Kettle,也称为Pentaho Data Integration (PDI),是一款强大的ETL(Extract, Transform, Load)工具,用于数据整合和清洗。...在实际应用中,结合具体场景和需求,这些示例可以作为模板或参考,帮助解决实际问题。

    kettle资源.zip

    2. **示例转换和作业**:实例文件可以帮助初学者快速理解Kettle的工作原理,通过实际操作学习各个步骤的用法。 3. **插件和库**:可能包含一些社区开发的插件,扩展了Kettle的功能,如特定数据源的连接器、复杂数据...

    etl开发工kettle3.1版本

    `报文生成kettle` 可能是一个具体的例子或模板,展示了如何使用Kettle生成数据报文,这对于理解Kettle在实际业务中的应用非常有帮助。 总的来说,Kettle 3.1版本为ETL开发者提供了强大的工具集,帮助他们高效地完成...

    kettle etl step插件制作--(1)

    7. **打包与部署**:最后,将插件打包成JAR文件,然后将它放入Kettle的plugins目录下,重启Kettle服务,新创建的步骤就可在Kettle的工作流和转换中使用了。 至于标签 "源码" 和 "工具",这表明博客内容可能深入探讨...

    Kettle学习资料大全.rar

    Kettle,全称为Pentaho Data Integration(PDI),是一款强大的数据集成工具,它由社区驱动,被广泛用于数据清洗、转换、加载以及ETL(提取、转换、加载)过程。Kettle以其可视化的工作流设计和高效的数据处理能力在...

    kettel循环执行动态sql

    标题中的“Kettle循环执行动态SQL”指的是使用Pentaho Data Integration(Kettle)工具来设计数据集成工作流,其中包含动态生成并执行SQL语句的步骤。在数据处理和ETL(Extract, Transform, Load)过程中,动态SQL是...

    kettle-pdi-ktr - 采集数据示例脚本.zip

    在这个名为"Kettle-PDI-KTR - 采集数据示例脚本.zip"的压缩包中,包含了7-8个具体的Kettle转换(Kettle Transformation,KTR)文件,这些文件主要用于从Oracle数据库提取数据并将其导入到MySQL数据库中。这些示例...

    kettle-neo4j-remix-8.2.0.7-719-REMIX.zip

    5. **示例和教程(Samples & Tutorials)**:为了帮助用户快速上手,压缩包中可能包含使用Kettle与Neo4j集成的示例项目和教学材料,让用户能够理解如何在实际场景中应用这些工具。 通过Kettle与Neo4j的结合,用户...

    kettle 工具的转换数据的步骤 txt文档

    在IT领域,特别是数据...无论是简单的文本数据处理还是复杂的数据库交互,Kettle都能提供强大的支持。对于IT行业的专业人士来说,掌握Kettle的数据转换流程不仅能够提高工作效率,还能在数据集成项目中发挥重要作用。

    kettle_web.zip

    提供的扩展用例可能包含了一些预配置的示例作业或转换,用于展示Kettle WebSpoon的能力或提供模板供用户参考。这些案例可能涵盖各种数据处理场景,如数据清洗、数据迁移、数据分析等,帮助用户快速上手并理解如何在...

    kettle手册.rar

    这份9M的大文件无疑是学习和掌握Kettle的宝贵资源。 1. **Kettle简介**:Kettle是一款开源的Java编写的数据集成工具,它提供图形化的界面,使得用户无需编程就能设计复杂的ETL流程。Kettle以其灵活的架构和高效的...

    teatrove-Kettle-4.0.3.zip

    在解压"teatrove-Kettle-4.0.3.zip"后,会得到一个名为“Kettle4.0.3”的文件夹,这个文件夹很可能包含了Kettle的安装程序、库文件、文档、示例以及其他必要的组件。用户可以通过这个文件夹来安装和运行Kettle,探索...

    kettle入门文档资料合集

    至于“demo”文件夹,它很可能包含了一些实际的Kettle项目示例,包括.ktr(Transformation文件)和.kjb(Job文件)。这些示例提供了直观的操作演示,让用户能够亲手操作,从而更好地理解和掌握Kettle的功能。通过...

    kettle学习文档

    这其中包括可能的步骤示例、作业模板、常见问题解答等,对于初学者来说是极有价值的参考资料。 总的来说,Kettle学习文档将引导你掌握这款强大的数据处理工具,让你能够高效地进行数据集成和转换工作。通过深入学习...

Global site tag (gtag.js) - Google Analytics