1. 概述
檔案輸入 文檔講述了「檔案輸入」算子的基本功能,「檔案輸入」算子支援從 FineDataLink 伺服器本地和 FTP/SFTP 伺服器上讀取 Excel 和 CSV 檔案資料,4.0.24 及之後版本,還支援批量讀取同格式的 Excel 和 CSV 檔案。
本文透過兩個簡單範例,講解使用「檔案輸入」算子讀取單個檔案的方法。
2. 範例一:讀取遠端FTP/SFTP伺服器資料
範例資料:2024-08-06 .xlsx、CSV文件.zip
2.1 配置 FTP/SFTP 資料連結
需要先配置 FTP/SFTP 資料連結,後續步驟中透過「檔案輸入」算子獲取FTP/SFTP伺服器中的資料。詳情請參見:配置FTP/SFTP資料連結
若已配置 FTP/SFTP 資料連結,檢查下是否有該資料連結的使用權限。
2.2 讀取 Excel 檔案
本節分兩個小場景講解:「檔案輸入」中不使用參數、「檔案輸入」中使用參數。
注:各設定項詳細介紹請參見 檔案輸入
2.2.1 檔案地址不設定參數
1)建立定時任務,拖入「資料轉換節」點,進入「資料轉換」節點。
2)拖入「檔案輸入」算子,設定「檔案輸入」算子:
檔案來源:要讀取的檔案所在的 FTP/SFTP 伺服器。
檔案類型:要讀取的檔案類型,本範例選擇 Excel 。
注1:檔案類型選擇 Excel 時,支援的後綴名:.xls、.xlsx、.XLS、.XLSX
注2:Excel 需要支援滿足的版本為 97~ 最新版本。
讀取方式:分為兩種,「檔案讀取」和「資料夾讀取」。「檔案讀取」只能讀取單個檔案,「資料夾讀取」可讀取資料夾中的檔案,具體介紹請參見:檔案輸入
檔案地址:選擇要讀取的檔案。支援使用參數,例如:/home/ftpuser/test/${time}.xlsx。也可以使用 參數指派 進行參數設定。
sheet名:填寫要讀取的 Sheet 名。為空時讀取第一個 sheet。
讀取行列範圍:設定要讀取的行列範圍。
起始行為欄位名:勾選時,將解析到的首行資料作為欄位名。不勾選時,首行將作為實際資料解析。
匯出欄位:分為兩種,「自動獲取」與「手動獲取」。「自動獲取」將根據解析結果直接讀取欄位類型,此時「自動獲取」介面下不顯示匯出的欄位。「手動獲取」介紹請參見:檔案輸入

3)點選資料預覽,如下圖所示:

2.2.2 檔案地址設定參數
Excel 檔案名稱以日期命名,比如該範例執行時日期為 2024-08-07,範例表資料名稱為 2024-08-06 。
1)點選「參數列表」,新增參數 time ,值為 yyyy-mm-dd-1,意為取值為 ${cyctime} 的前一天。「檔案輸入」算子中,該參數放在檔案地址中,讀取範例表資料。

2)「檔案輸入」算子中,檔案地址手動輸入值為:/data/demo_files/${time}.xlsx,輸入後按 Enter 鍵。如下圖所示:

3)點選「資料預覽」,可讀取 2024-08-06.xlsx 表資料。如下圖所示:

2.3 讀取 CSV 檔案
具體設定項介紹請參見:檔案輸入
1)進入「資料轉換」節點,拖入「檔案輸入」算子,設定「檔案輸入」算子:
列分隔符:根據指定的分隔符,分隔資料為多欄。配置的分隔符需要與檔案中實際的分隔符保持一致才可正常解析。可指定或自訂分隔符。
注:選擇自訂時,可以手動輸入自訂分隔符,可以輸入多個字元作為分隔符,可以是中文字元。
行分隔符:可指定 CSV 中的行分隔符。
編碼:指定 CSV 檔案編碼。本範例選擇 UTF-8。
正文限定符:用於標識資料值的開始和結束,以避免資料中包含的特殊字元干擾 CSV 檔案的解析。
讀取起始行:CSV 檔案可以從第 N 行開始取數。實際讀取時,將從配置的起始行開始進行讀取。

3)點選「資料預覽」,如下圖所示:

2.4 匯出資料
拖入「DB表匯出」算子,將資料匯出即可。如下圖所示:

寫入方式選擇「追加寫入資料」。
3. 範例二:讀取本地資料
範例資料參考本文第二章。
3.1 配置伺服器本地目錄資料連結
若需要讀取或者上傳本地的 Excel 和 CSV 檔案資料至 FineDataLink,需要建立一個「伺服器本地目錄」資料連結,並將要讀取的檔案放到%FDL%/webroot/WEB-INF/assets/local_files路徑下。具體請參見:配置伺服器本地目錄資料連結
若已配置「伺服器本地目錄」資料連結,檢查下是否有該資料連結的使用權限。
3.2 讀取檔案
1)建立定時任務,拖入「資料轉換節」點,進入「資料轉換」節點。
2)拖入「檔案輸入」算子,設定「檔案輸入」算子,如下圖所示:
與讀取 FTP/SFTP 伺服器上的檔案不同的是,伺服器本地目錄下,檔案地址中可手動上傳檔案。

3.3 匯出資料
拖入「DB表匯出」算子,將資料匯出即可。如下圖所示:

寫入方式選擇「追加寫入資料」。
