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

时间:2018-07-11 10:57:30

标签: pentaho kettle pentaho-spoon pentaho-data-integration pentaho-report-designer

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

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

转化流程:

  

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

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

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

任何人都可以帮助我理解这些步骤的行为以及上下文/用例。

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

pentaho一眼就能在这2个场所中工作:

1一切都是异步的流

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

答案 2 :(得分:0)

感谢技术人员分享您的知识。 据我了解,“执行SQL语句”步骤用于执行DDL,DML之类的SQL语句,但执行DML语句时,除了受影响/受影响的记录数(统计)之外,它不会给输出流任何结果

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