Kettle 调用 greenplum 数据库的存储过程

作者: 小飞牛_666 | 来源:发表于2019-09-27 00:23 被阅读0次

  第一次使用 kettle 以及 greenplum 数据库,特别是 greenplum 数据库网上资料特别稀缺,遇到问题都不知道去哪儿查找,今天总结下遇到过的问题。
  今天主题是:如何使用 kettle 调用 greenplum 编写的存储过程。

一、创建一个简单的学生表,用来给存储过程做简单的数据插入
--创建表
create table student(
    sid NUMERIC,
    sname varchar(20),
    sdate varchar(8)
);

二、创建操作学生表的存储过程
--创建存储过程
create or replace function My_LALIAN_PRO(IN S_ID NUMERIC, IN S_NAME VARCHAR, IN S_DATE VARCHAR)
    returns void 
as $$ 
begin
        --插入学生表
        insert into odmdb.odm.student values(S_ID, S_NAME, S_DATE);

end;
$$ 
language plpgsql;

三、在数据库中测试存储过程
--执行存储过程
select My_LALIAN_PRO(1,'feiniu','201901');
执行结果如下: a.png

从图中可以看出,我们编写的存储过程没有问题。

四、使用 Kettle 执行 存储过程

在 sql 脚本窗口中填写调用语句:

select My_LALIAN_PRO(2,'tangtang','201902');
如下图: b.png
五、执行转换
  这一步最坑爹了,眼看到嘴的鸡腿却让他给飞了,执行时候竟然报 "存储过程不存在" 报错,这到底是为何?在网上找了差不多两天,在绝望之际在过程名前面加用户名,但是报一样的错误,此刻差点就从楼上跳到游泳池去了。。。 c.png
六、问题的解决
  后来发现我们的 greenplum 和 oracle 的过程调用有那么一丢丢不同,oracle 可以使用 "用户名.过程名" 方式进行调用,然而这种方式对于我们的 greenplum 大人不适合呀;经过观察发现,我们的 过程 和 表 都存放在 数据库的模式中,因此我们可以直接从这里入手,方式就是 "数据库.模式.存储过程/表名" ,现将过程中的表前面做如下修改: d.png

接下来在 kettle 脚本里边将 sql 语句改为:

select odmdb.odm.My_LALIAN_PRO(2,'tangtang','201902')
我们在执行发现已经成功了: e.png 此时发现表中多了一条数据: f.png
  到这里总算成功了,虽然看上去简单,但是在问题没有解决之前还是挺绝望的,为以后再次踩同一个坑,也为了后来人避免踩这个坑,做了个总结,如果觉得有帮助给个赞,谢谢!
  您的支持是我坚持总结的动力 * ^_^ *

相关文章

  • Kettle 调用 greenplum 数据库的存储过程

      第一次使用 kettle 以及 greenplum 数据库,特别是 greenplum 数据库网上资料特别稀缺...

  • Mysql 数据库表名批量改为大写

    调用存储过程call uppercase('数据库名');

  • SQL语言:存储过程

    前言 本章我们将学习数据库中的存储过程,了解什么是存储过程,以及在MySQL中创建和调用存储过程。 存储过程是什么...

  • kettle 另类处理存储过程

    kettle 另类处理存储过程 今有一项目需要用kettle访问存储过程,经过测试发现使用【表输入】组件是无法完成...

  • MySQL存储过程使用解析

    mysql存储过程 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一...

  • Oracle存储过程

    2019-05-13 存储过程是用来完成指定任务的程序,存储在数据库系统中,用户可以远程调用存储过程。 存储过程的...

  • PL/SQL之存储过程

    存储过程、存储函数和触发器 存储过程和存储函数定义:指存储在数据库中供所有用户程序调用的子程序叫存储过程或存储函数...

  • Oracle之存储过程与存储函数

    存储过程和存储函数指存储在数据库中供所有用户程序调用的子程序叫存储过程或者存储函数;存储过程和存储函数相同点:完成...

  • mysql基础(三)

    存储过程和函数 存储过程和函数的引入 存储过程和函数是在数据库中定义一些 SQL 语句的集合,然后直接调用这些存储...

  • 数据库基础-存储过程

    能实现指定功能的程序,通过存储过程的名称和参数来调用存储过程,"数据库对象". 优点 -执行速度快,先将存储过程编...

网友评论

    本文标题:Kettle 调用 greenplum 数据库的存储过程

    本文链接:https://www.haomeiwen.com/subject/slplyctx.html