1. 概述
1.1 應用場景
FTP 伺服器上的檔案不定期自動更新,每次透過建立檔案更新資料。使用者希望自動讀取這些檔案的所有資訊並將資訊儲存到資料庫表中。
1.2 實現思路
檔案輸入 算子+參數實現。
「檔案輸入」算子每天讀取新增的檔案資料,將資料同步到資料庫表中。
2. 前提條件
1)若需要讀取本地的 Excel 和 CSV 檔案資料至 FineDataLink,需要建立一個「伺服器本地目錄」資料連結,並將要讀取的檔案放到%FDL%/webroot/WEB-INF/local_files/路徑下,並且有該資料連結的使用權限。具體請參見:配置伺服器本地目錄資料連結
2)若需要讀取遠端 FTP/SFTP 伺服器 Excel 和 CSV 檔案資料,需要配置 FTP/SFTP資料連結,並且有該資料連結的使用權限。具體請參見:配置FTP/SFTP資料連結
本方案適用於 4.0.24 及之後版本。
注:本文範例是從 FineDataLink 伺服器本地讀取檔案。
3. 範例一:基於檔案修改時間判斷新增檔案
本範例適用於:資料夾中的檔案名稱中不包含檔案新增時間,以新增檔案的方式新增資料,不更新原有檔案資料。
範例資料:csv文件.zip
3.1 設定參數
1)建立定時任務。
2)點選參數設定,設定參數 time ,值為yyyy-mm-dd,代表取 ${cyctime} (任務執行時間) yyyy-mm-dd 格式的值。如下圖所示:
注:${cyctime} 為定時任務在 調度配置 中設定的每次運作的時間節點,格式為 yyyy-mm-dd hh:mm:ss

3.2 讀取資料夾內資料
1)拖入「資料轉換」節點,進入「資料轉換」節點。
2)拖入「檔案輸入」算子,選擇要讀取的資料夾,「檔案篩選」處設定檔案修改時間大於參數 time ,篩選出新增檔案。
如果設定每天晚上 11 點開始執行任務,那麼每天此處篩選的就是從今天 0 點到今晚 11 點新增的檔案。(所以需要保證每天晚上 11 點到 12 點之間不重新整理增檔案)
「檔案修改時間」說明如下:
理解範例:比如某資料夾中昨天的表是 A 和 B,今天新增表 C ,更新表 B 中的資料,「檔案篩選」中篩選「檔案修改時間」為今天的表,可篩選出表 C 和表 B(表 B 中的所有資料,非今天更新的資料)。
精確度僅到分鐘,暫時無法精確到秒級別。
注:「檔案輸入」算子具體設定項介紹請參見:功能說明

注:檔案篩選設定步驟如下:

3)點選「資料預覽」,可看到新增的檔案資料已被讀取。如下圖所示:

3.3 資料匯出
1)拖入「DB表匯出」算子,將新增資料匯出到資料庫表中。如下圖所示:

2)寫入方式選擇「直接將資料寫入目標表」,將全部資料寫入到目標表中。如下圖所示:

3)點選右上角「發佈」到生產模式。
3.4 定時執行
點選「調度計劃」,定時執行任務。如下圖所示:
注:下圖中設定每天 23:55:55 執行任務,需保證該時間到晚上 24 點之前,無新增檔案生成。

3.5 結果展示

4. 範例二:基於檔案名稱判斷新增檔案
本範例適用於:檔案名稱中包含檔案新增時間,以新增檔案的方式新增資料,不更新原有檔案資料。
範例資料:2023-05-29库存.xls
本範例執行時間為 2023-05-29 ,篩選出 2023-05-29 新增的檔案。
4.1 設定參數
1)建立定時任務。
2)點選參數設定,設定參數 time ,值為yyyy-mm-dd,代表取 ${cyctime} (任務執行時間) yyyy-mm-dd 格式的值,目的是篩選任務執行時當天新增的檔案。如下圖所示:
注:${cyctime} 為定時任務在 調度配置 中設定的每次運作的時間節點,格式為yyyy-mm-dd hh:mm:ss

4.2 讀取資料夾內資料
1)拖入「資料轉換」節點,進入「資料轉換」節點。
2)拖入「檔案輸入」算子,選擇要讀取的資料夾,「檔案篩選」處設定要讀取的檔案名稱中包含參數 time ,篩選出新增檔案。
如果設定任務定時執行時間為每天晚上 11 點開始執行,那麼每天此處篩選的就是從今天 0 點到今晚 11 點新增的檔案。(需要保證每天晚上 11 點到 12 點之間不重新整理增檔案)
注:「檔案輸入」算子具體設定項介紹請參見:功能說明

3)點選「資料預覽」,可看到新增的檔案資料已被讀取。如下圖所示:

4.3 資料匯出
1)拖入「DB表匯出」算子,將新增資料匯出到資料庫表中。如下圖所示:

2)寫入方式選擇「直接將資料寫入目標表」,將全部資料寫入到目標表中。如下圖所示:

3)點選右上角「發佈」按鈕,發佈到生產模式。
4.4 定時執行
點選「調度計劃」,定時執行任務。如下圖所示:
注:下圖中設定每天 23:55:55 執行任務,需保證該時間到晚上 24 點之前,無新增檔案生成。

4.5 結果展示

