2014-06-05 29 views
0

我設計了一個Talend作業來將數據從excel文件複製到SQL Server表。 在複製數據之前,我正在使用數據庫中定義的一個存儲過程來清除數據庫中已有的條目,以避免重複。Talend中的存儲過程

但是,由於我將數據轉換到數據庫,可能沒有這個存儲過程,我的數據轉換將無法正常工作。

所以我想在我的Talend作業本身中定義存儲過程。

我應該使用哪個組件?我該如何操作?

回答

1

使用tSQLRow組件執行SQL語句,可以在tSQLRow組件中執行PLSQL語句。

+0

我很困惑tMSSqlSP和tMSSqlRow。 –

+0

作爲名稱表示一個用於執行'tMSSqlSP'存儲過程和另一個'tMSSqlRow'用於執行SQL語句,如刪除,更新,選擇.. – UmeshR

+0

我正在使用查詢.. 「從table1,table2, table3「 但它不工作。 所有的數據被複制並最終給出一個錯誤,說「不正確的語法附近」,「」 但是,如果我使用查詢「從表1刪除」 它的工作原理。 我必須使用多個tMSSQLRow嗎?每個表格。 –

0

Talend txxxSqlOutput組件爲您提供了更改默認「表格操作」的選項,其中一個選項是清除表格或截斷表格(有關差異,請參閱here)。或者,如果您希望每次都爲數據加載創建數據庫,並且不需要預備表和自定義索引,則可以使用drop table if exists and create選項每次重新開始一次。該選項唯一的問題是它不會做比創建PK索引,做數據類型,設置長度和在字段上設置可爲空/不可空的。所以,如果你需要添加很多索引,那麼你將會失去這些索引,但是隨後你可以在後面添加索引,這也有利於加速你的初始插入。

與往常一樣,你可以使用一個數據庫行組件執行自定義SQL對數據庫,這包括DELETE S,TRUNCATE S和ALTER秒,但我會傾向於使用了Talend提供儘可能因爲它的圖形組件保持邏輯從過濾下來到一個單獨的水平。您也可以在您的inital數據庫輸出組件中使用CREATE語句後,使用ALTER語句來設置索引/複雜鍵。

作爲一個附註,我不會把這種SQL語句放到存儲過程中,除非您有一個要求,即沒有應用程序在數據庫上執行即席SQL語句,並且所有事情都必須通過調用一個存儲過程來完成。通常情況下,只有在面向公衆的應用程序中,出於安全原因纔會執行此操作,並且允許從外部觸發語句聽起來像一個糟糕的主意。