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

Sql 如何将查询的实际文本从Pentaho Spoon导出到Excel文件中?,sql,pentaho,pdi,Sql,Pentaho,Pdi,我使用Pentaho Spoon进行数据集成,即PDI。我的内部客户希望将报告写入excel文件,这很好,但他也希望看到我在工作簿的单独选项卡中使用的查询。有没有一种方法可以使用Spoon将查询本身的实际文本(而不是结果)导出到.xlsx 换句话说,如果一个查询是 选择布偶、花生、雪碧 来自80年代的儿童卡通片 然后我想有一个excel文件显示 选择布偶、花生、雪碧 从80年代的节目。儿童卡通您可以使用PDI表格输入从变量获取数据。尝试定义一个包含所有列名的变量和另一个包含表名的变量,并尝试将此

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

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

选择布偶、花生、雪碧 来自80年代的儿童卡通片

然后我想有一个excel文件显示

选择布偶、花生、雪碧
从80年代的节目。儿童卡通

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

Select ${COLUMN VARIABLE} FROM ${TABLE NAME VARIABLE}
这将执行您的查询。现在要在excel中生成查询,请使用修改后的Java脚本步骤重新创建相同的结构。JS代码片段如下所示:

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输出中


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

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

现在来看看在pentaho中使用动态sql

设置一个作业,创建用于输出的excel文件,并在作业调用时或从文件系统中传入sql。现在,将sql传递给作业中负责填充excel文件的转换。将sql写入任何您想要的工作表


希望这有帮助

似乎没有一种方法可以在单个转换中实现这一点,我需要将转换作为作业的一部分执行,然后使用相同的查询执行另一个转换并将其视为文本文件。对吗?或者有没有一种方法可以在相同的转换中实现?我问这个问题是因为我希望在给定的表输入步骤中进行更改,以便在查询和输出中执行。这就是我目前能想到的全部内容。您可以更改日志记录级别并将日志解析为excel文件,但我从未尝试过这样做