2017-08-24 26 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)直接提供給表格輸入步驟。