【问题标题】:why the execute sql script is not working in kettle为什么执行 sql 脚本在水壶中不起作用
【发布时间】:2013-09-14 04:30:38
【问题描述】:

我正在使用kettle从一个表(t1)中获取数据并加入执行sql脚本工具(t2),然后在同一个表中进行插入/更新(t1)

这是我的变换

表格输入工具

select stud_id,mark from student; 

执行sql脚本

select s.stud_id,ifnull(m.mark,0) as mark from mark as m inner join student as s on (s.stud_id=m.stud_id) where s.student_id='?'

字段:stud_id

插入/更新工具

  • 桌子:学生
  • 检查:stud_id=stud_id
  • 更新:mark=mark

当我运行它时,它成功运行,但目标表中没有插入或更新值。

【问题讨论】:

    标签: kettle


    【解决方案1】:

    如果Execute SQL Script 步骤是我认为您所指的步骤,则它不会生成输出。它用于在您的转换中形成一堆 SQL 语句并单独运行它们。我现在不在 PDI 前面,但我相信运行动态 SQL 语句并将其输出添加到数据流的方法是 Execute Dynamic SQL 步骤。

    无论如何,在你的情况下,我会使用Database Join 步骤。此步骤准备语句并为到达转换的每一行重新执行查询计划,将数据替换为参数标记。性能更友好。

    【讨论】:

    • 嗨,是的,如果我使用数据库连接它的工作,但我需要来自同一个数据库的数据,而不是来自不同数据库的数据,那么为什么我必须使用数据库连接?,通常数据库连接会降低性能。
    • 如果是这样,为什么需要Execute SQL Script 步骤?您应该能够在Table Input 步骤中将其推送到SQL。 Database Join 步骤并不总是会降低性能。这取决于你想用它做什么,但如果你知道你只能返回 1 行,Database Lookup 步骤会更快。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 2013-11-18
    相关资源
    最近更新 更多