檔案輸入功能說明

  • 文檔創建者:Roxy
  • 編輯次數:38
  • 最近更新:Nikozhan 于 2025-05-29
  • 1. 概述

    1.1 版本說明

    FineDataLink 版本
    功能變動
    4.0.14-
    4.0.24

    FineDataLink 伺服器本地和 FTP/SFTP 伺服器中:

    • 支援批量讀取同格式的 Excel 和 CSV 檔案

    • 支援 Excel 和 CSV 檔案自訂匯出欄位類型

    • 支援 CSV 檔案跨越前 N 行取數

    • 支援 TXT 檔案讀取

    • 支援忽略後綴名大小寫讀取

    4.1.4
    • 支援讀取 json/xml 檔案

    • 檔案類型選擇 CSV 時,支援讀取類 csv 檔案類型,例如tsv、log、dt(csv 和 xml 混合格式)等

    4.2.6.1
    • 支援新增內建字段「fileName(檔案名稱)」、「filePath(檔案路徑)」、「lastModifiedTime(檔案修改時間)」,在配置中可新增三個內建欄位作為匯出欄位

    • 檔案讀取後綴取消必填校驗

    1.2 應用場景

    使用者在搭建數倉時,希望能從 FineDataLink 伺服器本地或者共享目錄中讀取 Excel 、CSV 檔案資料。

    同時可以透過 FDL 將 Excel 、CSV 檔案直接上傳至 FDL 伺服器本地。

    1.3 功能簡介

    FineDataLink 支援「檔案輸入」功能,可讀取檔案資料。如下圖所示:

    2. 前提條件

    注:透過分配資料連結權限控制每個人允許存取的 本地伺服器目錄,保證資料與權限安全。

    • 若需要讀取或者上傳本地的 Excel 和 CSV 檔案資料至 FineDataLink,需要建立一個「伺服器本地目錄」資料連結,並將要讀取的檔案放到%FDL%/webroot/WEB-INF/assets/local_files路徑下,並且有該資料連結的使用權限。具體請參見:配置伺服器本地目錄資料連結

    • 若需要讀取遠端 FTP/SFTP 伺服器 Excel 和 CSV 檔案資料,需要配置 FTP/SFTP資料連結,並且有該資料連結的使用權限。具體請參見:配置FTP/SFTP資料連結

    • 4.0.24 版本之前,僅支援上傳後綴小寫 Excel 和 CSV 檔案,對於大寫後綴的 Excel 和 CSV 檔案上傳校驗不透過。若檔案存在,但無法讀取,請檢查檔案後綴是否為大寫 .CSV/.XLSX,請手動修改為小寫。

    3. 功能說明

    1)「檔案輸入」算子前端日誌顯示的讀取量,不包含表頭這行資料。

    比如 Excel 資料有 100 w行,包括 1 行表頭+999999行資料,「檔案輸入」算子讀取後,前端日誌會顯示讀取 999999 行資料。

    2)「檔案輸入算子中,檔案地址、資料夾地址、檔案篩選、Sheet名設定項中支援使用參數,參數使用方法請參見:如何配置並使用參數檔案輸入算子+參數」的具體使用範例請參見本文第七章內容。

    3.1 讀取 Excel 檔案

    3.1.1 檔案來源

    需要提前配置「伺服器本地資料連結」或「FTP/SFTP資料連結」且需要有該資料連結的使用權限,下拉框中才會出現選項。

    3.1.2 檔案類型

    檔案類型選擇「Excel」時:

    • 支援的 Excel 檔案後綴名:.xls、.xlsx、.XLS、.XLSX

    • Excel 需要支援滿足的版本為 97~ 最新版本

    3.1.3 讀取方式

    分為兩種,「檔案讀取」和「資料夾讀取」。

    1)檔案讀取

    • 讀取單個檔案。

    • 檔案地址:選擇要讀取的檔案;支援輸入參數若檔案來源是伺服器本地目錄,此處填寫的是相對於%FDL%/webroot/WEB-INF/assets/local_files的路徑,例如:/home/ftpuser/test/${time}.xlsx(/home 在 %FDL%/webroot/WEB-INF/assets/local_files路徑下)。

    注:在「檔案地址」中,貼上完整檔案地址或者手動輸入檔案地址後,按 Enter 鍵儲存。

    • 檔案來源為「伺服器本地目錄」且讀取單個檔案時,「檔案地址」處支援手動上傳檔案至有權限的 FDL 伺服器本地目錄中。上傳檔案名稱限制:上傳檔案名稱不能包含「 ? * : " < > \ / | 」,不能以空格開頭。上傳檔案大小不能超過 100M 。

    2)資料夾讀取

    可讀取資料夾中的多個同格式檔案,將檔案資料合併在一起。資料夾中的 Excel 檔案需要欄位名相同;資料夾中的 CSV 檔案需要分隔符相同。

    注1:若需要讀取的資料夾中包含多種格式資料,且僅需要讀取一種檔案類型,則在讀取的時候需要進行檔案篩選,篩選檔案名稱中包含 CSV 或者 Excel 的指定檔案,否則會預設讀取資料夾中的所有類型的檔案。

    注2:檔案輸入算子中讀取資料夾中的檔案時,是併發讀取的,最多併發讀取 20 個檔案。

    例如資料夾下有兩個檔案 test1 和 test2 ,若選擇「資料夾讀取」則會將檔案資料合併在一起,如下圖所示:

    詳細範例詳情參見:批量扫描文件同步数据

    配置項說明
    資料夾地址

    選取要讀取的資料夾。指定資料夾方式:透過介面點選選擇資料夾、手動輸入資料夾地址(可設定參數,輸入參數後需要手動點選選中該參數)

    注:在「資料夾地址」中,貼上完整地址或者手動輸入資料夾地址後,按 Enter 鍵儲存

    讀取子資料夾若不勾選,讀取時將忽略子資料夾中的檔案;勾選時,讀取時包括子資料夾中的檔案。
    檔案篩選

    允許配置篩選條件過濾資料夾下的多個檔案,獲取符合要求的部分檔案進行讀取。可透過「檔案名稱」和「檔案修改時間」來篩選檔案。支援透過參數篩選

    「檔案修改時間」理解範例:比如某資料夾中昨天的表是 A 和 B,今天新增表 C ,更新表 B 中的資料,「檔案篩選」中篩選「檔案修改時間」為今天的表,可篩選出表 C 和表 B(表 B 中的所有資料,非今天更新的資料)。

    注1:「檔案修改時間」的精確度僅到分鐘,暫時無法精確到秒級別。

    注2:4.1.1 及之後版本,產品內條件判斷邏輯進行了統一,每個運算子的說明可參見:條件判斷邏輯說明

    3.1.4 sheet 名

    填寫要讀取的 Sheet 名。為空時讀取第一個 sheet。sheet 名稱支援使用參數。

    3.1.5 讀取行列範圍

    指定 Excel 讀取起始行和讀取結束行,指定 Excel 讀取起始列和讀取結束列。

    數字框中要求為正整數。

    3.1.6 首行為欄位名

    勾選時,將解析到的首行資料作為欄位名。

    不勾選時,首行將作為實際資料解析。

    3.1.7 匯出欄位

    1)有兩種獲取方式,說明見下表:

    獲取方式
    說明
    自動獲取

    將根據解析結果直接讀取欄位類型

    手動獲取支援自訂欄位類型:
    • 「手動獲取」介面下將展示匯出欄位名稱、匯出欄位類型,支援自訂欄位類型,可設定欄位類型為:varchar、int、long、float、double、date、timestamp。

    注:CSV 檔案的情況下,不能選擇 date 和 timestamp 類型。

    • 欄位允許追加,允許刪除追加的欄位,但不允許對已有欄位進行刪除或順序調整。

    注:追加的欄位名稱,不允許為空,不能包含空格,不能與其他有效欄位名重複。

    • 追加的欄位如果前 N 行沒有資料,則對應行值為 NULL 。

    2)4.2.6.1 及之後版本,兩種方式均支援新增三個內建欄位「fileName(檔案名稱)」、「filePath(檔案路徑)」、「lastModifiedTime(檔案修改時間)」,在配置中可新增三個內建欄位作為匯出欄位。

    注:支援修改內建欄位的欄位名,限制 30 字元,不能與其他有效欄位重名。

    當配置了內建欄位後,資料預覽和實際運作時都會新增該列內容。預覽效果如下: 

    3)若 FTP 獲取檔案以及資料夾的時間(lastModifiedTime)比實際伺服器上的時間晚 8 h 或時間錯誤等情況,需要修改配置檔案,此操作會影響資料夾條件中的時間過濾

    修改 /etc/vsftpd/vsftpd.conf 配置檔案,在最下面一行增加:

    use_localtime=YES

    重啟 FTP

    service vsftpd restart

    3.2 讀取 CSV 檔案

    若檔案類型選擇「CSV」檔案,需配置以下內容:

    檔案來源、讀取方式、首行為欄位名、匯出欄位介紹請參見本文 3.1 節內容,其餘設定項說明見下表:

    設定項
    說明
    檔案類型

    檔案類型選擇 CSV 時,支援讀取 csv 檔案類型。

    例如:支援的檔案後綴名:csv、CSV、txt、TXT、tsv、log、dt(csv 和 xml 混合格式)等。

    讀取檔案後綴

    當使用者選擇「檔案讀取」方式時,新增該選項。說明如下:

    • 不區分大小寫;

    • 根據使用者輸入「檔案後綴」讀取檔案地址中的該類型檔案,跨越路徑下非該格式檔案;

    • 支援寫多種格式,以逗號為分隔符;支援讀取類 CSV 檔案,例如:txt/tsv/log

    • /dt(csv和xml混合格式)

    4.2.6.1 及之後版本,取消必填校驗

    列分隔符

    根據指定的分隔符,分隔資料為多欄。配置的分隔符需要與檔案中實際的分隔符保持一致才可正常解析。

    分隔符可選擇:英文逗號,列表符\t英文分號;管道符|空格ASCII字元自訂

    • 可以手動輸入自訂分隔符,可以輸入多個字元作為分隔符,可以是中文字元;

    • 可以手動輸入十進制的 ASCII 編碼,指定 ASCII 字元作為特殊的列分隔符,支援的十進制ASCII編碼為0~32;

    • 正文限定符、列分隔符、行分隔符彼此不可重複

     行分隔符

    支援指定 CSV 中的行分隔符:

    • CR+LF:在 Windows 系統中使用;

    • LF:在 Unix、Linux 等系統中使用;

    • CR:在早期的 Mac OS 系統中使用;

    • 正文限定符、列分隔符、行分隔符彼此不可重複

    正文限定符

    用於標識資料值的開始和結束,以避免資料中包含的特殊字元干擾 CSV 檔案的解析。

    可選擇:雙引號、單引號、ASCII 字元(支援的十進制ASCII編碼為0~32);

    正文限定符、列分隔符、行分隔符彼此不可重複

    編碼

    指定 CSV 檔案編碼

    編碼支援選擇 GBK、BIG5、ISO-8859-1、UTF-8、UTF-16、EUC_JP、EUC_KR、CP850、GB2312

    注:該設定項應該選擇正確的檔案編碼格式,否則,將會導致讀取資料亂碼

    讀取起始行

    CSV 檔案支援從第 N 行開始取數:

    • 必填。預設值為 1,不允許輸入 1 以下的數字;

    • 實際讀取時,將從配置的起始行開始進行讀取;

    • 多檔案讀取的情況下,對於每個檔案,此配置都將生效;

    • 同時指定「起始行為欄位名」時,將以讀取起始行開始,取該行作為欄位名行。

    3.3 自訂

    支援讀取 xml、json 等檔案類型。

    預設獲取為正文資料,一個檔案一行資料,列名預設為「column」,解析內容功能由後續XML解析JSON解析等算子實現。如下圖所示:

    檔案來源、讀取方式、檔案地址請參見本文 3.1 節。

    3.3.1 讀取檔案後綴

    讀取方式選擇「檔案讀取」時,新增該選項:

    • 不區分大小寫。

    • 支援寫多種格式,以逗號為分隔符。

    • 檔案後綴不能重複。

    3.3.2 編碼

    編碼可選擇 GBK、BIG5、ISO-8859-1、UTF-8、UTF-16、EUC_JP、EUC_KR、CP850、GB2312。如下圖所示:

    3.3 資料預覽

    「資料預覽」介面如下圖所示:

    說明如下:

    • 預覽資料量預設最多20行;使用前5000行資料中出現的欄位與首行列數(如果指定了首行為欄位名稱)取並集,作為預覽時展示的欄位,且僅取數取樣前5000筆資料,但請不要擔心,在匯出資料時為全量匯出。

    • 如果首行欄位為合併儲存格的情況,將合併儲存格進行拆分後,以「欄位名稱+數字」的方式對拆分後的欄位命名,如三個儲存格合併後的首行儲存格為「姓名」,則命名為姓名、姓名1、姓名2..:

    • 如果CSV首行欄位有重名情況,以「欄位名稱+數字」的方式對重複欄位命名,如重複欄位為姓名,則重複欄位命名為姓名1、姓名2...。

    • 未勾選首行包含欄位名時,欄位名稱以「column+數字」的方式對解析出的欄位依次命名,如column、column1、column2...。

    4. 升級相容說明

    FDL 工程的定時任務中使用了檔案輸入算子,其中檔案類型選擇 CSV,讀取方式為資料夾讀取:

    • 若設定了檔案篩選條件,升級到 4.1.4 及之後版本後,filename 包含.txt、.TXT、.csv、.CSV,與升級前配置的篩選條件為且關係。

    • 若沒有設定檔案篩選條件,升級到 4.1.4 及之後版本後,filename 預設包含.txt、.TXT、.csv、.CSV。

    5. 特殊場景處理策略

    場景處理策略
    批量讀取的檔案中,存在個別檔案資料格式與範本檔案不符

    選擇資料夾時,將滿足篩選條件,按檔案名稱首字母排序的第一個檔案作為範本。


    如果此格式不符的檔案,欄位個數與類型與範本檔案相同,則不會報錯,將視為正確的檔案讀取

    如果此格式不符的檔案,欄位個數或類型與範本檔案不同,則此檔案報錯,算子執行報錯,並列印日誌記錄當前報錯時讀取的檔案名稱

    讀取的檔案中,位於末尾的欄位在取樣行數之後才有資料欄位匯出配置中,在末尾追加欄位,配置欄位名和欄位類型

    讀取時前N行會被讀取為NULL,有資料的行正常讀取

    自訂匯出的欄位類型與實際資料類型不相容將報錯

    6. 讀取的 Excel 資料條件

    儲存格格式與讀取後欄位的關係說明:

    Excel儲存格格式
    解析欄位格式
    標準基於原始值判斷,可解析成FDL支援的類型,則自動解析,無法解析視為字串。
    數值

    數值

    貨幣

    數值

    會計專用

    數值

    日期、時間

    日期或時間戳

    只有年月日解析成日期、含有日期時間解析成時間戳。

    百分比

    數值

    分數

    數值

    科學計數法數值
    正文字串

    1)CSV欄位類型問題

    CSV讀取後,匯出只有字串和數字兩種類型,數字需要保證不丟精度。對於時間類型,如2022-11-10類型的時間,解析為字串;時間戳類型的時間解析成數字。

    2)合併儲存格讀取問題

    對於合併的儲存格,拆分儲存格讀取,複製值到每個拆分後的儲存格進行讀取。

    3)欄位為空的情況

    如果標題欄位存在空值,則將空值以「column+數字」的方式補充。

    如果數字欄位存在空值,填NULL

    4)不支援 Excel 的多選Sheet讀取。

    5)不支援檔案名稱通配符。

    6)不支援讀取設密碼的Excel檔案。

    7. 應用範例

    簡介文檔
    讀取單個檔案
    文件输入算子读取单个文件
    讀取某資料夾中同格式的 Excel 和 CSV 檔案,一次性讀取多個檔案後儲存批量扫描文件同步数据
    財務報表、銷售資料表、學生成績表等 Excel 表格中,往往包含多個 Sheet,使用者希望使用 FDL 讀取單 Excel 多 Sheet 檔案資料读取单Excel多Sheet文件数据讀取檔案時,「sheet 名」設定項中使用參數

    場景:

    批量讀取同格式檔案,檔案新增頻率較高

    以新增檔案的方式新增資料,不更新已有檔案資料

    判斷新增檔案方式:

    方式一:根據檔案名稱:檔案名稱中包含檔案新增時間,例如2023-05-29庫存資料

    方式二:根據檔案新增時間

    適用於 4.0.24 及之後版本:基于时间增量读取文件讀取檔案時,「檔案篩選」設定項中使用參數
    讀取某資料夾中同格式的 Excel 和 CSV 檔案,每讀取一個檔案,希望先對資料做處理,再儲存

    循环多次读取Windows环境文件同步数据

    循环多次读取Linux环境文件同步数据

    讀取檔案時,「檔案地址」設定項中使用參數

    使用者業務流程中下發的檔案,有特定的檔案生成則代表下發完成。比如:檔案下發完成後,目錄下會生成與檔案同名的 .ok 檔案(用來判斷檔案是否下發完成)、.del 檔案(根據值的不同判斷寫入方式)、.sql 檔案。

    現需要將已經下發完成(生成 .ok 檔案)的 csv 檔案按照 .del 記錄的方式進行讀取入庫,並且讀取檔案後,需要記錄已經讀取完成的檔案,以便在任務異常重啟時避免重複寫入

    获取目录下符合条件的文件,按写入方式读取入库并记录状态

    讀取檔案時,「檔案地址」設定項中使用參數

    使用者的業務資料以壓縮包的形式每日進行下發,儲存在 FTP 檔案伺服器對應的日期目錄下,已經下發完成的壓縮包檔案會生成同名的 .ok 檔案

    使用者需要將部分壓縮包檔案傳輸到另外一個位置,並進行解壓,希望已經傳輸成功的檔案,下次任務運作時不會再重複傳輸

    FTP服务器中白名单文件自动传输与解压



    附件列表


    主題: 資料開發-定時任務
    已經是第一篇
    已經是最後一篇
    • 有幫助
    • 沒幫助
    • 只是瀏覽
    • 评价文档,奖励 1 ~ 100 随机 F 豆!