簡體   English   中英

根據文本文件輸入元數據進行數據庫插入

[英]Make a DB INSERT based on Text File Input metadata

我正在開發ETL,並且必須執行一些例程來對其進行監視。

開始時,我必須在DB上的INSERT中創建一條記錄,以通知文件名和開始過程的日期時間。 該查詢將返回記錄的PK,並且必須將其存儲。 當該文件的ETL完成時,我必須更新該記錄,以告知ETL成功完成及其結束過程的日期時間。

我使用文本文件輸入來查找與其正則表達式匹配的文件,並將其“其他輸出字段”添加到流中。 但是我找不到一個僅可用於第一條記錄並且將對INSERT執行SQL命令的組件。

您可以同時使用“標識最后一行”和“過濾行”,因此您將僅保留輸入中的一行(僅過濾最后一行)。 您將在“過濾器行”步驟之后立即插入。

在此處輸入圖片說明

由於需要拆分流程,因此需要將ID列與原始文本輸入行連接在一起。

您還具有Unique row 如果您未指定在哪個字段上過濾唯一值,則它將只輸出一行。

現在,除非我誤解了您的規格,否則我寧願使用Kettle的日志記錄系統 單擊任意位置,在彈出窗口中選擇屬性,然后單擊“日志記錄”選項卡。 它將為您提供狀態(開始/結束/停止/ ...)和大量其他信息,例如錯誤數,讀取和寫入的行(只需告訴PDI它必須在哪一步上尋找這些數字)。 。

您甚至可以幾乎實時地在數據庫中讀取與PDI底部面板上相同的信息。 只需單擊所需的字段,然后按SQL按鈕即可創建文件。

請注意,由於歷史原因,開始日期並不是真正的開始日期(它是前一次成功運行的日期)。 開始日期稱為“ Replay date

另外,如果您需要該系統監視負載並知道運行是否必須開始,請當心,在系統突然終止時,有時沒有時間將“ End”寫入日志。 因此, logdate<now-10minutes更可靠。

在此處輸入圖片說明

要僅對流的第一行執行某項操作,請使用“添加序列”步驟(從1開始),然后執行條件為“ seq = 1”的“過濾行”步驟。

暫無
暫無

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

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