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("主函数结束");
}
}
分享到:
相关推荐
模版可以视为一个基础模板,其中包含了通用的数据处理结构,而实际生成的Kettle文件则是根据特定的业务条件和数据源进行填充。例如,模版可能包含了一个从数据库读取数据,进行清洗,然后写入另一数据库的基础转换。...
官方提供的Kettle插件开发示例,如"pdi-sdk-plugins-8.1.0.0-R"这个压缩包,涵盖了五种类型的插件示例,这为我们深入了解Kettle插件开发提供了宝贵的学习资源。下面将详细介绍这些类型以及它们在Kettle中的作用: 1...
一个简单的kettle生成xml例子。 使用xml jion 组件。 用于生成固定格式的xml。
4. **文档和教程**:为了帮助用户理解如何在Kettle中使用MQTT,压缩包可能包含详细的操作指南、API参考或者示例工作流,说明如何创建和配置MQTT连接,以及如何在ETL过程中使用MQTT数据源和目标。 5. **示例项目**:...
本篇博客文章“示例学习kettle之Excel Writer步骤”聚焦于如何使用Kettle中的Excel Writer步骤来生成或更新Excel文件。 Excel Writer是Kettle中的一个重要组件,它允许我们以Excel格式导出数据,这对于数据报告、...
Kettle,也称为Pentaho Data Integration (PDI),是一款强大的ETL(Extract, Transform, Load)工具,用于数据整合和清洗。...在实际应用中,结合具体场景和需求,这些示例可以作为模板或参考,帮助解决实际问题。
2. **示例转换和作业**:实例文件可以帮助初学者快速理解Kettle的工作原理,通过实际操作学习各个步骤的用法。 3. **插件和库**:可能包含一些社区开发的插件,扩展了Kettle的功能,如特定数据源的连接器、复杂数据...
`报文生成kettle` 可能是一个具体的例子或模板,展示了如何使用Kettle生成数据报文,这对于理解Kettle在实际业务中的应用非常有帮助。 总的来说,Kettle 3.1版本为ETL开发者提供了强大的工具集,帮助他们高效地完成...
7. **打包与部署**:最后,将插件打包成JAR文件,然后将它放入Kettle的plugins目录下,重启Kettle服务,新创建的步骤就可在Kettle的工作流和转换中使用了。 至于标签 "源码" 和 "工具",这表明博客内容可能深入探讨...
Kettle,全称为Pentaho Data Integration(PDI),是一款强大的数据集成工具,它由社区驱动,被广泛用于数据清洗、转换、加载以及ETL(提取、转换、加载)过程。Kettle以其可视化的工作流设计和高效的数据处理能力在...
标题中的“Kettle循环执行动态SQL”指的是使用Pentaho Data Integration(Kettle)工具来设计数据集成工作流,其中包含动态生成并执行SQL语句的步骤。在数据处理和ETL(Extract, Transform, Load)过程中,动态SQL是...
在这个名为"Kettle-PDI-KTR - 采集数据示例脚本.zip"的压缩包中,包含了7-8个具体的Kettle转换(Kettle Transformation,KTR)文件,这些文件主要用于从Oracle数据库提取数据并将其导入到MySQL数据库中。这些示例...
5. **示例和教程(Samples & Tutorials)**:为了帮助用户快速上手,压缩包中可能包含使用Kettle与Neo4j集成的示例项目和教学材料,让用户能够理解如何在实际场景中应用这些工具。 通过Kettle与Neo4j的结合,用户...
在IT领域,特别是数据...无论是简单的文本数据处理还是复杂的数据库交互,Kettle都能提供强大的支持。对于IT行业的专业人士来说,掌握Kettle的数据转换流程不仅能够提高工作效率,还能在数据集成项目中发挥重要作用。
提供的扩展用例可能包含了一些预配置的示例作业或转换,用于展示Kettle WebSpoon的能力或提供模板供用户参考。这些案例可能涵盖各种数据处理场景,如数据清洗、数据迁移、数据分析等,帮助用户快速上手并理解如何在...
这份9M的大文件无疑是学习和掌握Kettle的宝贵资源。 1. **Kettle简介**:Kettle是一款开源的Java编写的数据集成工具,它提供图形化的界面,使得用户无需编程就能设计复杂的ETL流程。Kettle以其灵活的架构和高效的...
在解压"teatrove-Kettle-4.0.3.zip"后,会得到一个名为“Kettle4.0.3”的文件夹,这个文件夹很可能包含了Kettle的安装程序、库文件、文档、示例以及其他必要的组件。用户可以通过这个文件夹来安装和运行Kettle,探索...
至于“demo”文件夹,它很可能包含了一些实际的Kettle项目示例,包括.ktr(Transformation文件)和.kjb(Job文件)。这些示例提供了直观的操作演示,让用户能够亲手操作,从而更好地理解和掌握Kettle的功能。通过...
这其中包括可能的步骤示例、作业模板、常见问题解答等,对于初学者来说是极有价值的参考资料。 总的来说,Kettle学习文档将引导你掌握这款强大的数据处理工具,让你能够高效地进行数据集成和转换工作。通过深入学习...