如何将Pentaho Spoon中查询的实际TEXT导出到Excel文件中?

时间:2014-11-06 19:18:04

标签: sql pentaho pdi

我使用Pentaho Spoon进行数据集成(又名PDI)。我的内部客户端想要将报告写入excel文件,这很好,但他也希望在工作簿的单独选项卡中看到我使用的查询。有没有办法使用Spoon将查询本身的实际文本 - 而不是结果 - 导出到.xlsx?

换句话说,如果一个查询是

SELECT Muppets,Peanuts,Sprites 来自eighties_shows.childrens_cartoons

然后我想要一个显示

的excel文件

SELECT Muppets,Peanuts,Sprites 来自eighties_shows.childrens_cartoons

2 个答案:

答案 0 :(得分:0)

您可以使用PDI表输入从变量中获取数据。尝试定义一个变量,该变量将包含所有列名(以及包含表名的另一个变量),并尝试将此变量传递给表输入步骤。例如: 在表输入步骤中定义:

Select ${COLUMN VARIABLE} FROM ${TABLE NAME VARIABLE}

这将执行您的查询。现在,要在Excel中生成查询,请使用"修改的Java脚本"步骤重新创建相同的结构。 JS Code剪辑如下:

LOOP i=1 till getInputRowMeta().size()

   var fields =getInputRowMeta().getValueMeta(i) /* This will give you the list of Input Columns along with the datatype e.g. Muppets String(100) */

END LOOP

从fields变量中删除数据类型,并创建一个具有

串联的最终变量
var final_query="SELECT" + cleaned fields variable from the above JS + "FROM" + table name;

因此,您生成一个可以在Excel输出中轻松输出的查询。

这是一个有点冗长的过程。但除了使用上述方法生成查询之外,我无法获得任何其他解决方案。希望这个解决方案对你有好处!! :)

答案 1 :(得分:0)

大多数现代数据库都支持动态sql。如果您使用的是SQL Server,请查看sp_executesql。所有这些意味着您的SQL代码存储为字符串并以这种方式执行。

现在在pentaho中使用动态sql ....

设置一个作业,为输出创建excel文件,并且还可以在作业调用或文件系统中传入sql。现在将sql传递给将负责填充excel文件的作业中的转换。将sql写入你想要的任何表格。

希望这有帮助