如何从文件中读取多个SQL语句并在pentaho中执行

时间:2015-02-26 10:33:39

标签: pentaho pentaho-spoon

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

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%');

我需要加载的数据很大(2500万/天),上面的SQL语句只是样本。选择所有行并在每行上应用过滤器对我来说都不是一个选项。

.ktr文件非常有用。

感谢您的建议。

2 个答案:

答案 0 :(得分:4)

您也可以尝试如下:

  1. 使用“将行复制到结果”将所有SQL查询读入内存。检查图像如下:
  2. enter image description here

    1. 在单独的转化中,定义变量并检查execute for every input rowcopy previous result to parameter

    2. 最后,选择“表输入步骤”并使用上面定义的变量。检查下图:

    3. enter image description here

      这里我使用${queries}作为变量。

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

      我认为这个过程将扩大到数百万的记录。我没有尝试过这么大的音量,但是你可以尝试一下。

      以下是上面显示的代码的gist

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

      希望有所帮助:)

答案 1 :(得分:0)

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