繁体   English   中英

Pentaho转换“执行SQL语句”与“表输入”步骤

[英]Pentaho Transformation “Execute SQL Statements” vs “Table Input” step

我是PDI / Kettle的新手。我需要执行类似于“ SELECT EMPID FROM Employee”的简单SQL select,并且需要将输出写入“ Microsoft Excel Output”作为报告生成的一部分。

  1. 当我在转换的“要执行的SQL脚本”部分下的“执行SQL语句”步骤中编写此查询并执行该查询时,它没有返回任何内容,但转换已完成且没有任何错误。 没有结果写入我的输出文件 与“执行行SQL脚本”步骤相同的行为,是通过以查询作为输入从sql文件/数据网格中读取输入。

转换流程:

执行SQL语句>> Microsoft Excel输出
执行SQL语句>>文本文件输出

  1. 如果我使用“表输入”步骤并在“ SQL”部分下编写查询,它将被执行并给出结果。

表输入>> Microsoft Excel输出
表输入>>文本文件输出

谁能帮助我理解这些步骤的行为以及上下文/用例。

谢谢专家们在这方面的知识分享。 根据我的理解,“执行SQL语句”步骤用于执行DDL,DML之类的SQL语句,但是除了执行DML语句时受影响/受影响的记录数(统计)之外,它不会给输出流任何结果。

为了跟踪此统计信息,有一些可选字段,例如插入状态,更新状态,删除状态和读取状态,并且根据您的DML语句,我们可以给出字段名称和受影响的记录数将作为值写入该字段。 这可以在“转换执行结果”下的“预览数据”中注意到。

Execute SQL Statement不提供任何结果。 其目的是使用DDL(数据定义语言)删除/创建/截断/更改表,以及DML(数据操作语言)插入/更新/删除行。

在对每个步骤进行编码之后,两项检查(以及其他检查)应成为第二种性质:

  1. 检查输出列(在步骤上单击鼠标右键,选择Output fields )。
  2. 预览结果(在步骤上单击鼠标右键,选择Preview )。

让我解释一下pentaho pdi(水壶)的一个基本概念:水壶上的所有动作都是连续发生的。 如果没有行,将不会执行任何操作。 因此,如果您在转换开始时添加了一个generate row步骤,则其中一个哑行具有一些值,您将看到如何触发您的sql语句。

一目了然,pentaho在以下两个前提下工作:

1一切都是异步的

2每个动作都在行级别发生。 (无行,无操作)输入表步骤生成行,但是execute sql语句不是输入步骤类型,而是转换步骤,并且希望在此步骤之前已经生成行。 我认为这两个基本概念可以帮助您了解ketle的工作原理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM