1、之前有个同学说他使用kettle执行一坨sql语句时,kettle直接卡死掉了。我给出的建议是使用存储过程,果不其然使用存储过程顺利解决问题。

今天我们一起来学习下kettle如何调用存储过程,这里基于mysql进行演示。调用存储过程有两种方法:使用步骤【调用DB存储过程】或者步骤【执行SQL脚本】。

2、调用DB存储过程-无参存储过程。

1)创建无参数存储过程sp_without_param

use test;
drop procedure if exists sp_without_param;
delimiter //
create procedure sp_without_param()
begin
-- 打印信息
select 'sp_without_param 我执行了' from dual;
end //
delimiter ;

2)将步骤【调用DB存储过程】拖到画布上,然后通过写日志打印执行结果,如下图所示:

3)步骤【DB存储过程】设置

步骤名称:自定义步骤名称。

数据库连接:选择定义好的数据库连接。

存储过程名称:填写需要调用的存储过程名称,这里填写sp_without_param。

启用自动提交:设置数据库事物是否自动提交。

返回值名称:函数调用的结果的名称;如果是一个存储过程,留空即可。

返回值类型:函数调用结果的类型;如果是存储过程则不适用。

参数:由于这里是无参数存储过程,无需填写。

3、调用DB存储过程-有参存储过程。

1)创建有参数存储过程sp_with_param,其中param_name 是入参,result是返回结果。

use test;
drop procedure if exists sp_with_param;
delimiter //
create procedure sp_with_param(IN param_name VARCHAR(255) ,OUT result VARCHAR(255))
begin
-- 打印信息
select concat('sp_with_param 我执行了',param_name) INTO result from dual;
end //
delimiter ;

2)步骤【生成纪录】产生入参param_name,步骤【调用DB存储过程】调用sp,步骤【写日志】打印执行结果,如下图所示:

3)步骤【DB存储过程】设置

参数:

名称:参数名称,包含入参数和返回参数。

方向:IN、OUT、INOUT三个选项,根据情况自行选择。

类型:参数类型,和存储过程参数需要相对应。

注意:这里的参数顺序要和存储过程里面的参数顺序保持一致。

4、使用步骤【执行SQL脚本】调用存储过程,这里主要用到mysql中的语法如:call 存储过程名称,本次不做具体介绍,如下图所示:

kettle从入门到精通 第五十七课 ETL之kettle调用存储过程的更多相关文章

  1. GPU 编程入门到精通(五)之 GPU 程序优化进阶

    博主因为工作其中的须要,開始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识.鉴于之前没有接触过 GPU 编程.因此在这里特地学习一下 GPU 上面的编程. 有志同道合的小伙 ...

  2. CoreData 从入门到精通(五)CoreData 和 TableView 结合

    我们知道 CoreData 里存储的是具有相同结构的一系列数据的集合,TableView 正好是用列表来展示一系列具有相同结构的数据集合的.所以,要是 CoreData 和 TableView 能结合 ...

  3. Hibernate从入门到精通(五)一对一单向关联映射

    上次的博文中Hibernate从入门到精通(四)基本映射我们已经讲解了一下基本映射和相关概念,接下来我们会讲稍微复杂点的映射——关系映射. 关系映射分类 关系映射即在基本映射的基础上处理多个相关对象和 ...

  4. [置顶] Hibernate从入门到精通(五)一对一单向关联映射

    上次的博文中Hibernate从入门到精通(四)基本映射我们已经讲解了一下基本映射和相关概念,接下来我们会讲稍微复杂点的映射——关系映射. 关系映射分类 关系映射即在基本映射的基础上处理多个相关对象和 ...

  5. 【PHP】最详细PHP从入门到精通(五)——PHP错误处理

     PHP从入门到精通 之PHP中的字符串 在创建脚本和 web 应用程序时,错误处理是一个重要的部分.如果您的代码缺少错误检测编码,那么程序看上去很不专业,也为安全风险敞开了大门. 本教程介绍了 PH ...

  6. Spring Boot从入门到精通(五)多数据源配置实现及源码分析

    多数据源配置在项目软件中是比较常见的开发需求,Spring和Spring Boot中对此都有相应的解决方案可供大家参考.在Spring Boot中,如MyBatis.JdbcTemplate以及Jpa ...

  7. Linux自有服务(1)-Linux从入门到精通第五天(非原创)

    文章大纲 一.运行模式二.用户与用户组管理(重点)三.网络设置四.ssh服务(重点)五.学习资料下载六.参考文章   自有服务,即不需要用户独立去安装的软件的服务,而是当系统安装好之后就可以直接使用的 ...

  8. Simulink仿真入门到精通(五) Simulink模型的仿真

    5.1 模型的配置仿真 由各种模块所构建的可视化逻辑连接,只是模型的外在表现,模型仿真的核心驱动器是被称作解算器(Solver)的组件,相当于Simulink仿真过程的心脏,驱动着模型仿真,它在每一个 ...

  9. Docker从入门到精通(五)——Dockerfile

    Dockerfile 简单来说就是一个包含用于组合镜像的命令的文本文档,Docker 通过读取 Dockerfile 中的指令就可以按步骤生成镜像,那么在制作镜像之前,我们先了解一下镜像的原理. 1. ...

  10. kettle从入门到精通 第十一课 kettle javascript 解析json数组

    1.json步骤虽然可以解析json数组,但是不够灵活.通过javascript步骤来解析json数组比较灵活,且可以按照需要组装数据流转到下个步骤. 1)步骤名称:可以自定义 2)Transform ...

随机推荐

  1. 使用Oracle SQL Developer工具完成Mariadb数据库迁移到Oracle数据库

    Oracle SQL Developer 是一个免费的集成开发环境,简化了传统部署和云部署中 Oracle 数据库的开发和管理.SQL Developer 提供完整的端到端的 PL/SQL 应用开发, ...

  2. 力扣686(java)-重复叠加字符串匹配(中等)

    题目: 给定两个字符串 a 和 b,寻找重复叠加字符串 a 的最小次数,使得字符串 b 成为叠加后的字符串 a 的子串,如果不存在则返回 -1. 注意:字符串 "abc" 重复叠加 ...

  3. 牛客网-SQL专项训练6

    ①要将employee 的表名更改为 employee_info,下面MySQL语句正确的是(A) 解析: RENAME用于表的重命名:RENAME  <NAME>(修改表名或索引名) 或 ...

  4. 链栈的实现 C语言/C++

    堆栈的链式存储C/C++实现--链栈 与顺序栈相比,链栈的优点在于不存在栈满上溢的问题.链栈通常使用单链表实现,进栈.出栈操作就是在单链表表头的 插入.删除操作.用单链表实现链栈时,使用不带头结点的单 ...

  5. [FE] FastAdmin 动态下拉组件 Selectpage 自定义 data-params

    正常情况下,我们想获取列表只需要定义接口路径和要显示的字段名即可, 比如: <input id="c-package_ids" data-rule="require ...

  6. dotnet 已知问题 使用 Directory.EnumerateXXX 方法枚举 C 盘根路径可能错误的问题

    在 dotnet 里面,可以使用 Directory.EnumerateXXX 系列方法进行枚举文件或文件夹.在准备枚举驱动器根路径的文件或文件夹时,可能获取到错误的路径.错误的步骤在于传入的是如 C ...

  7. VMware Workstation Pro各版本下载链接汇总(特全!!!)

    VMware Workstation Pro各版本下载链接汇总 (10.11.12.14.15.16官网全版本) 整理不易,点赞关注一下吧 工具软件:VMware Workstation Pro 1. ...

  8. 面对Centos7系统的openssl版本升级

    CentOS7的版本系统,默认的OpenSSL的版本为OpenSSL 1.0.2k-fips 26 Jan 2017.但是openssl需要的版本需要较高的版本.通过下载最新的openssl版本.对o ...

  9. three.js介绍和学习资料说明

    1.three.js能做什么 Three.js是基于原生WebGL封装运行的三维引擎,在所有WebGL引擎中,Three.js是国内文资料最多.使用最广泛的三维引擎.既然Threejs是一款WebGL ...

  10. uniapp登录板块封装(旧接口getUserInfo)

    点击查看代码 // 授权并获取用户信息 const authorizeAndGetUserInfo = (loginRes) => { uni.getUserInfo({ success(res ...