簡體   English   中英

Pentaho將uniqe記錄導入數據庫

[英]Pentaho Import uniqe records into database

我對Pentaho Spoon還是很陌生,我想將一個csv文件的記錄導入數據庫表。 但是,僅唯一記錄應導入數據庫表中。 這就是為什么我需要將EACH記錄與數據庫表的所有記錄進行比較,以確定是否應該導入記錄。

到目前為止,我嘗試了建議的CRUD模式,如下所示: 在此處輸入圖片說明

如您在圖片中看到的,我合並了excel輸入和表輸入(忽略轉換步驟。我需要轉換一個值,因為它們在float格式方面有所不同:數據庫格式為#.000000,而float的csv格式是#.0)

合並聯接后,我比較標志(由合並行(diff)給出),如果比較的記錄是新記錄,則將它們導入數據庫表,如果它們被更改,我將更新記錄並刪除它們或相同,我只是什么都不做,到目前為止,很好。

但這是問題所在:如果我重新整理csv-input-file的記錄並重新運行轉換,則所有記錄都將重新導入,因此,數據庫表中有重復的記錄(我想避免)。 再次強調:解決此問題的正確方法是將csv-input-file的每一行與數據庫表中的ALL條目進行比較。

我怎么能意識到這一點? 有什么建議么? 提前非常感謝您!!

Merge Rows (diff)期望對輸入進行排序。 通常,會通過彈出窗口警告您。

在到達“ Merge Rows (diff)之前,在“ Excel輸入”的輸出流上放置一個“ Sort rows步驟。

您應該在Table InputMerge Rows (diff)之間執行相同的操作。 當然,您可能會認為您可以在Table Input的sql語句中完成此操作。

但是,這里有一個初學者陷阱。 您還有其他3個步驟,在同一表上執行Output RowsUpdateDelete 這些步驟可能會鎖定表格。 就像在Kettle中一樣,所有步驟都同時運行,因此您不知道首先執行哪些步驟,並且該表可能被鎖定,甚至無法讀取第一條記錄。 用專業術語將其稱為自動鎖定 ,解決方法是將“ Sort Row步驟作為緩沖區

您可以使用“維度查找/更新”控件,該控件提供您嘗試實現的相同功能。

謝謝,尼羅什

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM