2015-02-26 38 views
1

我是pentaho的新手,我需要从文件读取多个SQL语句并将输出存储在文件或数据存储中。输出/选择列对于所有的sql语句都是通用的。我可以知道如何实现它。 E.g如何从文件中读取多个SQL语句并在pentaho中执行

Select last_name, first_name age from employee where age is > 25; 
Select last_name, first_name age from employee where salary is > 25000; 
Select last_name, first_name age from employee where deptid in (Select deptid from dept where deptid like 'Dept-E00%'); 

,我需要加载的数据是巨大的(25元/天)和上面的SQL语句只是样品。选择所有行并在每行上应用过滤器对我来说不是一种选择。

.ktr文件非常有用。

感谢您的建议。

回答

0

您可以使用“执行行SQL脚本”来运行SQL脚本。它将按顺序运行每个脚本,并将它们的结果集全部返回到单个数据流中。我建议你为每个SQL语句添加一个常量字段,以包含它们引用的内容的描述,因为我不确定执行行SQL脚本是否将SQL语句包含在输出流中。

+0

我上按比例放大的一点怀疑“执行SQL /执行SQL行”的步骤,当谈到加载百万计的数据卷。虽然我不能确定100%,但请看看我的解决方案,并给出你的想法。 ! – Rishu

4

您也可以尝试如下:

  1. 阅读使用“复制行导致”的所有SQL查询到存储器中。检查图像如下:

enter image description here

  • 在一个单独的转化,定义一个变量和检查execute for every input rowcopy previous result to parameter

  • 最后,取一个“表输入步骤”并使用如上定义的变量。检查下面的图片:

  • enter image description here

    在这里,我已经使用${queries}作为变量。

    注意:假设输出步骤元数据结构将保持不变。如果它正在改变,我认为它不会工作。

    我假设这个过程将会扩大数百万条记录。我没有尝试过这个庞大的音量,但你可以尝试一下。

    这里是gist的代码如上所示。

    如果您需要了解更多信息,您还可以阅读this blog

    希望它能帮助:)

    +1

    有趣。我同意,这可能会更好地扩大。 – nsousa

    相关问题