2017-08-24 84 views
0

我正在使用执行SQL脚本组件向MSSQL发送SQL代码来执行。Pentaho Spoon:从txt文件加载SQL代码并运行它

但我宁愿将ttc代码保存在txt文件中,以便Subversion可以控制它们的更改。

这些文件将存储在存在于相同级别的ktr文件中的sql中。我希望某些组件等同于执行SQL脚本来读取.sql文件,将其内容发送给MSSQL。如果我可以在sql文件上提供连接字符串,或者至少将其设置为ktr参数,那将会非常棒。

在最不可能的情况下,我需要一个组件来读取sql文件,将其存储在一个字符串变量中,并将它传递给另一个组件,它将接收变量并发送它。

能够替换SQL代码上的变量也很棒。

对不起,我试图学习勺子和缺少的功能,我曾经有。

+0

假设每个sql脚本只包含一个sql语句,即使语句写在多行上是否合理? – AlainD

回答

1

您可以调整以下建议:

enter image description here

  1. 第一步读取文件。

    • file选项卡中把文件目录为$ {} Internal.Transformation.Filename.Directory(不要输入,按Ctrl空间)并在Wildcard.*\.sql让所有的文件结尾“ .SQL”。使用Show filenames按钮,并调整正则表达式和下一个选项卡以获取所需的所有文件。
  2. 第二步执行脚本。

    • 使用下拉菜单告诉水壶使用的文件名在SQL场

    • ,并选中告诉它是一个文件名。

这是不能够动态地设置连接。这是因为kettle使用准备好的JDBC语句来管理并行线程。如果没有太多连接,可以使用Switch/Case步骤,该步骤将发送到具有适当连接的Execute row SQL script的副本。

0

我相信你想要加载文件内容的内存步骤。您的字段名称和元素将是“文件内容”。从那里你可以“设置变量”或将字段“文件内容”(你的SQL)直接提供给表格输入步骤。