Kettle中调用用户自定义的jar包

2023-11-01

在使用kettle过程中,有些功能是kettle不提供的,这样就需要想办法,不过kettle中的java代码可以解决大部分问题,下边就展示使用java代码组件调用自己编写的jar包的过程

1,创建java-jar包

package test;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class TestFun {
	public String to_upper(String str)
	{
		String str1=str.toUpperCase();
		BufferedWriter writer = null;  
        File file = new File("d:\\dat\\"+ "aaa" + ".json");  
        //如果文件不存在,则新建一个  
        if(!file.exists()){  
            try {  
                file.createNewFile();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
        //写入  
        try {  
            writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file,false), "UTF-8"));  
            writer.write("aaa");  
        } catch (IOException e) {  
            e.printStackTrace();  
        }finally {  
            try {  
                if(writer != null){  
                    writer.close();  
                }  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
		return str1;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TestFun tf = new TestFun();
		System.out.println(tf.to_upper("china"));
	}

}

调试,没问题后,导出jar



2,将jar包放入kettle中的lib目录,并重启kettle

3,创建ktr并测试

整体流程

其中从数据库中输入表行,经过java代码处理输出为文本文件

其中java代码内容如下:

//package com.tools.ws;
import test.TestFun;


public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
  		Object[] r = getRow();
    	// If the row object is null, we are done processing.
		if (r == null) {
			setOutputDone();
			return false;
		}
		
		//if(first){
		//	first = false;
		//}

		TestFun tf = new TestFun();
		
		r = createOutputRow(r, data.outputRowMeta.size());
		String inputstr = get(Fields.In,"str").getString(r);
		String upperstr = tf.to_upper(inputstr);
		String upperstr2 = inputstr.toUpperCase();
		get(Fields.Out, "outputstr1").setValue(r, upperstr);
		get(Fields.Out, "outputstr2").setValue(r, upperstr2);
		putRow(data.outputRowMeta, r);

		return true;
}

以下是截图


测试截图:


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kettle中调用用户自定义的jar包 的相关文章

  • 如何修复“[OData Source [56]] 错误:无法从运行时连接管理器获取托管连接。” SSIS 中的错误?

    我在运行从 SharePoint 列表中提取数据的 SSIS 时遇到问题 SSIS 包在 2 周前运行良好 突然该包失败并出现以下错误 OData 源 56 错误 无法从运行时连接管理器获取托管连接 SSIS Pipeline 错误 ODa
  • 使用 Interop 从 Excel 获取最后一个非空列和行索引

    我正在尝试使用互操作库从 Excel 文件中删除所有多余的空白行和列 我关注了这个问题使用 Interop 从 Excel 文件中删除空行和空列的最快方法 https stackoverflow com questions 40574084
  • 日期时间的 SSIS 源格式隐式转换

    有谁知道有一个图表可以显示 SSIS 中不同数据类型支持哪些日期格式 例如 是否DT DBTimestamp支持格式1 Jan 我尝试寻找但找不到任何东西 我问的原因是我发现当我尝试做一个Convert datetime 1 Jan 它失败
  • 如何使用OrientDB ETL仅创建边

    我有两个 CSV 文件 首先包含 500M 记录 格式如下 id name10000023432 汤姆用户13943423235 胡说八道 第二个包含 1 5B 好友关系 格式如下 从 ID 到 ID10000023432 13943423
  • 使用 Java 停止运行 Kettle Job/Transformation

    我也在使用 Java 开发基于 Web 应用程序的 ETL 使用 Kettle 引擎 我在尝试停止正在运行的作业时遇到了问题 我不确定使用 CarteSingleton java 是否正确 我正在使用自定义单例地图 我的代码如下 Job j
  • 使用 AWS Glue 时如何查找更新的行?

    我正在尝试使用 Glue 对从 RDS 迁移到 Redshift 的数据进行 ETL 据我所知 Glue 书签仅使用指定的主键查找新行 而不跟踪更新的行 然而 我正在处理的数据往往会频繁更新行 我正在寻找可能的解决方案 我对 pyspark
  • SQL 脚本到 SSIS 表达式

    我有下面的 T SQL 查询行 我正在尝试将其转换为 Visual Studio SSIS 表达式到派生列任务 So tableA刚刚 Work item Submission no 列 但我需要将它们分成两列 例如SubmissionCo
  • SSIS - 动态地将文件移动到具有匹配子字符串名称的文件夹

    我正在使用 foreach 循环和文件系统任务将文件移动到特定文件夹中 或至少尝试这样做 i e 文件名可以是100000 需要到文件夹1000 文件102000需要转到文件夹1020 文件103000需要转到文件夹1030 ETC ETC
  • Python 中的最佳 ETL 包

    我有两个用例 从 Oracle PostgreSQL Redshift S3 CSV 提取 转换并加载到我自己的 Redshift 集群 安排作业每天 每周运行 INSERT TABLE 或 INSERT NONE 选项更好 我目前正在使用
  • 当设置为 CRLF 时,SSIS 将 LF 读取为终止符

    使用 SSIS 2012 我的平面文件连接管理器我有一个分隔文件 其中行分隔符设置为CRLF 但是当它处理文件时 我有一个文本列 其中有一个LF在里面 这导致它将其读取为行终止符 从而导致失败 有任何想法吗 我没有 SSIS 经验 但作为一
  • SSIS 顺序处理

    我在同一数据流任务中有 5 个独立的数据流 每个数据流都有源和目的地 我怎样才能让它们按顺序运行 它们似乎并行运行 我可能会在不同的数据流任务中执行此操作 但我怎样才能在单个数据流任务中做到这一点 同一任务中不要有独立的数据流 我知道导入
  • SSIS 可以支持加载每行具有不同列长度的文件吗?

    目前 我每天收到大约 75 万行的文件 每行开头都有一个 3 个字符的标识符 对于每个标识符 列数可以更改 但特定于标识符 例如 SRH 将始终有 6 列 AAA 将始终有 10 列 依此类推 我希望能够通过 SSIS 将此文件自动生成 S
  • 创建实时数据仓库

    我正在做一个个人项目 其中包括创建数据仓库 DWH 的完整架构 在本例中 作为 ETL 和 BI 分析工具 我决定使用 Pentaho 它具有许多功能 从允许轻松创建仪表板到完整的数据挖掘流程和 OLAP 多维数据集 我读过数据仓库必须是关
  • 释放对执行进程任务中使用的变量的锁定SSIS

    我有一个包裹Foreach容器 and 执行流程任务 inside 对于每个容器 在执行流程任务中出现一些错误时 它会重定向到OnError事件处理程序对于每个容器 我正在使用 exe 捕获错误标准误差变量任务的属性并在脚本任务中使用它On
  • 根据另一个数据库的查询结果查询一个数据库

    我在 VS 2013 中使用 SSIS 我需要从 1 个数据库获取 ID 列表 并使用该 ID 列表 我想查询另一个数据库 即SELECT from MySecondDB WHERE ID IN list of IDs from MyFir
  • 根据单元格位置将选择性字段从 Excel 批量插入到 SQL

    我有一个 SSIS 包 我必须从 Excel 工作表中选择一些值并将它们插入到 SQL Server 数据库表中 我是通过执行 sql 任务来完成的 这些是步骤 从映射表中选择所有记录 单元格位置是动态的 因此将其保留在 SQL 表中 大约
  • 为什么我的 ODBC 连接在 Visual Studio 中运行 SSIS 加载时失败,但在使用执行包实用工具运行相同包时却失败

    我正在 SSIS 2012 中处理数据集市加载包 当尝试在 Visual Studio 中执行该包时 我收到此错误 AcquireConnection方法调用连接管理器数据 Warehouse ssusr 失败 错误代码为 0xC00140
  • 数据转换器 SSIS 数据流组件中相应列的转换数据类型应该是什么?

    我们的一台服务器上有普通的 Microsoft SQL Server 2008 我们决定在文件系统上创建 DTSX 文件 以便我们可以使用 BIDS 2008 打开 DTSX 文件 一种 SSIS 控制流组件 它从 Microsoft SQ
  • Talend 和 Apache Spark?

    我对 Talend 和 Apache Spark 在大数据生态系统中的定位感到困惑 因为 Apache Spark 和 Talend 都可以用于 ETL 有人可以用一个例子解释一下吗 Talend 是一种基于工具的大数据方法 通过内置组件支
  • 删除或更改 ETL 中的记录

    我有一个表 我在上面构建了 ETL 服务 货物记录 到达 离开 进入表格 我已经这样做了 我的桌子将被删除 当项目标识符第二次到达数据库时 两条记录都被删除 label cost time x2 29 14 5 2020 01 00 00

随机推荐

  • 和导师的第二次探讨

    Jason提问 导师 最近读文献的方面我碰到两个问题 一 就是感觉读的太杂了 人工智能方向太大 文章五花八门 二 内容刚接触感觉晦涩难懂 特别是英文文献 而且用翻译软件意思有时候翻译成中文就感觉也不对 我应该如何解决呢 导师回答 对于问题一
  • sourceInsight官网介绍及插入定制语言支持

    sourceInsight官网介绍及插入定制语言支持 版本说明 版本 作者 日期 备注 0 1 ZY 2019 6 4 初稿 目录 文章目录 sourceInsight官网介绍及插入定制语言支持 版本说明 目录 一 sourceinsigh
  • 已经有了ERP,为什么还要上MES?

    当前 制造企业面临着巨大的竞争和成本压力 利润越来越少 交货时间要求越来越短 人力成本越来越高 产品越来越复杂 大多数企业已经在使用ERP系统了 他们会想 我已经上了ERP了 为什么还需要MES系统 许多工厂车间只有很有限的IT系统 比如自
  • Vector简介说明

    转自 Vector简介说明 下文笔者讲述Vector简介说明 如下所示 Vector简介 Vector集合和ArrayList集合功能相似 底层都是通过数组来实现集合的 Vector和ArrayList最大的区别是Vector的很多方法都是
  • 开发Android硬件访问服务

    在http blog csdn net getnextwindow article details 47731597中 为Android系统添加了HAL模块 开发好一个硬件抽象层以后 我们通常还需要在应用程序框架中实现一个硬件访问服务 硬件
  • 数据结构实验--带环、相交链表问题

    一 问题描述 基于课程上机关于单链表的作业 要求进一步实现以下需求 1 构造链表后 将元素值为 m 和 n 从键盘输入 如有多个相同元素值 仅考虑首个出现的元素 的节点建立连接 注意判断节点出现的先后关系 将后面出现的节点 假设为 n 的链
  • 【数据结构】栈和队列

    栈和队列 一 栈 1 栈的简单介绍 2 栈的相关函数接口实现 1 初始化 2 销毁 3 压栈 4 弹栈 5 判空 6 取栈顶元素 7 栈的大小 二 队列 1 队列的简单介绍 2 队列的相关函数接口实现 1 初始化 2 销毁 3 插入 4 删
  • 台湾海峡隧道工程线路初定3个方案(图)

    台湾海峡隧道工程线路初定3个方案 图 http www sina com cn 2007年04月22日01 50 新京报 3方案示意图 本报讯 昨日 第一届海峡两岸通道 桥隧 工程学术研讨会新闻发布会在福州举行 与会专家称 台湾海峡隧道工程
  • PLC驱动伺服电机、步进电机共阳极接法-20230701

    由于工作需要 需要测试一台小型伺服电机是否好坏 记录一下接线方法 设备如下 信捷XDM 60T10 C PLC 安诺机器人 57AIM30一体化伺服电机 官网找了下技术手册 可以看到这是一款24V供电的小型伺服驱动器 供电可以用手头的这款P
  • 高通平台(8917/8937/8953...) secure boot 软件配置

    以下以8917平台为例 其他平台类似 找到对应配置文件即可 1 新建临时目录 mkdir tmp cd tmp 2 复制openssl文件到临时目录 cp LA UM LINUX android vendor qcom proprietar
  • Pytorch(GPU)详细安装教程

    如果你也是为了安装Pytorch的话 然后在安装CUDA时出现上述错误时 那么就有必要往下看了 我电脑小白 自己摸索安装 一点一点搜索 然后在我不断努力下终于安装成功 最近也是在学习深度学习 把自己安装软件过程中遇到的问题很大家分享一下 在
  • Apollo CyberRT编译问题‘Socket closed‘

    Apollo 编译问题 Socket closed apollo CyberRT编译错误 错误原因 解决方法 apollo CyberRT编译错误 Server terminated abruptly error code 14 error
  • Oracle函数 获得一个UUID

    通过Oracle函数返回一个UUID create or replace function F GET UUID p length in INT return varchar2 is Result varchar2 200 说明 返回一个指
  • GitHub入门教程

    一 注册GitHub账号 GitHub官网https github com 注册之后 登录注册的邮箱验证后注册完成 二 下载Git 有Mac Windows Linux版本的 下载地址 https git scm com downloads
  • js 提示crypto is not defined

    在使用python 调用js的时候 Crypto enc UTF8 parse 引用这个函数的时候提示这个模块没有 没定义 随即 npm install crypto 但是又报错 cryptois not found 换了一些源也没用 最后
  • r语言聚类分析_R语言ggtree画圆形的树状图展示聚类分析的结果

    今天的主要内容是实现下面这幅图 做完聚类分析通常可以选择 树形图来展示聚类分析的结果 之前公众号也分享过一篇文章 如果样本数不是很多 可以选择矩形的树状图 但是样本数如果比较多 比如今天一位公众号的读者留言说他有160多个样本 这样 矩形的
  • 微信小程序------联动选择器

    2019独角兽企业重金招聘Python工程师标准 gt gt gt picker 从底部弹起的滚动选择器 现支持五种选择器 通过mode来区分 分别是普通选择器 多列选择器 时间选择器 日期选择器 省市区选择器 默认是普通选择器 先来看看效
  • VM12+CentOS6.5+hadoop2.7.3 搭建hadoop完全分布式集群

    参考 http blog csdn net gamer gyt article details 51991893 一 安装VM 12 x 下载地址 链接 http pan baidu com s 1c2KA3gW密码 3r67 二 安装Ce
  • 移动端 - 搜索组件(suggest篇)

    这一篇博客是和 search input篇 衔接的 需要的可以看上文 移动端 搜索组件 search list篇 这里我们需要去封装这么一个组件 先说一下大致的方向 1 根据父组件传入的关键字数据发送请求获取后端数据 进行模板渲染 2 处理
  • Kettle中调用用户自定义的jar包

    在使用kettle过程中 有些功能是kettle不提供的 这样就需要想办法 不过kettle中的java代码可以解决大部分问题 下边就展示使用java代码组件调用自己编写的jar包的过程 1 创建java jar包 package test