1. 概述
1.1 版本
| FineDataLink 版本 | 功能變動 |
|---|---|
| 4.0.26 | 新增「檔案匯出」算子,可將資料匯出為 CSV 類型的檔案 |
| 4.0.30 | 可將資料匯出為 Excel 類型的檔案 |
| 4.1.4 | 資料匯出為 CSV 格式時,匯出的檔案名稱後綴支援自訂,例如:txt、log、tsv等 |
| 4.2.10.3 | 1)新增支援匯出資料到自訂類型檔案 2)若選擇檔案匯出到 Excel 檔案:
3)欄位映射中,支援修改欄位名,修改欄位類型 |
1.2 應用場景
使用者希望將加工後的資料以檔案形式分享給業務人員直接查看使用。
銀行體系下,不允許直連資料庫或開放API,需要以檔案形式下發資料給其他聯動業務系統使用。
政企分享資料的程式中,需要將資料以檔案形式留檔。
對接部分大數據資料源時,需要 FDL 寫資料檔案,然後資料源透過讀取檔案的形式高速裝載資料。
匯出資料到自訂類型檔案,單行單欄的 XML/JSON 格式資料可直接原樣匯出為對應檔案供後續的操作。
將匯出的資料按行數拆分至多個 sheet ,適用於大數據量的檔案匯出場景。
「檔案匯出」算子可滿足上述場景。
1.3 功能簡介
「檔案匯出」算子可將處理後的資料匯出到指定目標與路徑的結構化檔案中。如下圖所示:
注:若資料不需要進行復雜處理,可使用 資料同步 節點將資料匯出為檔案形式。

2. 前提條件
若需要將檔案匯出到 FineDataLink,需要建立一個「伺服器本地目錄」資料連結,並將要讀取的檔案放到%FDL%/webroot/WEB-INF/local_files/路徑下,並且有該資料連結的使用權限。具體請參見:配置伺服器本地目錄資料連結
若需要將檔案匯出到 FTP/SFTP 伺服器中,需要配置 FTP/SFTP資料連結,並且有該資料連結的使用權限。具體請參見:配置FTP/SFTP資料連結
3. 功能說明
注:避免多個任務/節點同時寫入同一檔案。
3.1 資料匯出到 CSV 檔案中
設定介面如下圖所示:

3.1.1 檔案目標
檔案匯出的位置。可將檔案匯出到「FTP/SFTP 伺服器」中或者「伺服器本地目錄」中。
3.1.2 檔案類型
支援資料匯出為 CSV/Excel 類型的檔案。
3.1.3 資料夾地址
選擇檔案匯出目錄,將以「資料連結」中所選路徑作為寫入目錄;不允許為空;支援使用參數。
3.1.4 檔案名稱
1)填寫檔案名稱:支援填寫參數;不允許為空。
2)4.1.4 及之後版本,檔案名稱後綴支援自訂,可輸入:txt、log、tsv等,不區分字母大小寫,可以為空。如下圖所示:

3.1.5 列分隔符
注:列分隔符、正文限定符、行分隔符彼此不可重複。
根據指定的列分隔符,分隔資料為多欄。
分隔符可選擇:英文逗號,、列表符\t、英文分號;、管道符|、空格、ASCII字元、自訂

ASCII字元:可以手動輸入十進制的 ASCII 編碼,指定 ASCII 字元作為特殊的列分隔符。支援的十進制 ASCII 編碼為 0~32。
十進制 ASCII 編碼為 0~32 的含義如下表所示:
| 十进制 ASCII 编码 | 含义 |
|---|---|
| 0 | 空字符(Null) |
| 1 | 标题开始 |
| 2 | 本文开始 |
| 3 | 本文结束 |
| 4 | 传输结束 |
| 5 | 请求 |
| 6 | 确认回应 |
| 7 | 响铃 |
| 8 | 退格 |
| 9 | 水平定位符号 |
| 10 | 换行键 |
| 11 | 垂直定位符号 |
| 12 | 换页键 |
| 13 | 归位键 |
| 14 | 取消变换(Shift out) |
| 15 | 启用变换(Shift in) |
| 16 | 跳出数据通讯 |
| 17 | 设备控制一(XON 启用软件速度控制) |
| 18 | 设备控制二 |
| 19 | 设备控制三(XOFF 停用软件速度控制) |
| 20 | 设备控制四 |
| 21 | 确认失败回应 |
| 22 | 同步用暂停 |
| 23 | 区块传输结束 |
| 24 | 取消 |
| 25 | 连接介质中断 |
| 26 | 替换 |
| 27 | 跳出 |
| 28 | 文件分割符 |
| 29 | 组群分隔符 |
| 30 | 记录分隔符 |
| 31 | 单元分隔符 |
| 32 | 空格 |
3.1.6 行分隔符
指定 CSV 檔案中的行分隔符
CR+LF(在 Windows 系統中使用)
LF(在 Unix、Linux 等系統中使用)
CR(在早期的 Mac OS 系統中使用)
3.1.7 正文限定符
用於標識資料值的開始和結束,以避免資料中包含的特殊字元干擾 CSV 檔案的解析。
可選擇指定、自訂、無,如下圖所示:

指定:可選擇雙引號""、單引號''
自訂:可以手動輸入十進制的 ASCII 編碼,指定 ASCII 字元作為特殊的正文限定符。支援的十進制 ASCII 編碼為 0~32,具體含義可見本文 3.1.5 節內容。
3.1.8 編碼
指定 CSV 檔案編碼,編碼可選擇 GBK、BIG5、ISO-8859-1、UTF-8、UTF-16、EUC_JP、EUC_KR、CP850。

3.1.9 首行匯出欄位名
勾選時,將欄位名寫入檔案第一欄;不勾選時,則直接將資料寫入檔案第一欄。
3.1.10 檔案拆分
「檔案拆分」適用於大數據量的檔案匯出場景,例如資料量超過 Excel 支援的最大行數上線時,使用此功能將按行數拆分資料。
詳情參見本文 3.2.2 節

3.1.11 檔案重名策略
指同一資料夾中,檔案不能重名。
有三種:
檔案重名,停止寫入並報錯
檔案重名,追加寫入資料:若指定 sheet 名在目標檔案已經存在,則追加寫入對應 sheet;否則新增 sheet 寫入
注:4.2.10.3 之前版本,若選擇檔案匯出到 Excel 檔案,「檔案重名策略」無法選擇「檔案重名,追加寫入資料」。
檔案重名,改寫目標檔案資料:將修改已有目標檔案,請謹慎確認檔案路徑

3.1.12 欄位映射
4.2.10.3 之前版本中,欄位匹配時,展示的目標欄位類型固定為 string,不允許修改。實際寫入時,各資料類型的處理邏輯見:歷史版本
4.2.10.3 及之後版本,支援重新命名欄位、更改欄位類型。介面如下圖所示:

欄位類型預設映射邏輯如下表所示,無法支援的類型則統一為 string。
| 原始類型 | 匯出類型 |
|---|---|
| null | 空字串 |
| int | int |
| double | double |
| float | float |
| long | string |
| decimal | decimal |
| BigInteger | BigInteger |
| BigDecimal | BigDecimal |
| boolean | boolean |
| date | date |
| string | string |
| timestamp | timestamp |
| any | string |
| vachar | vachar |
「檔案匯出」算子前一算子的預覽效果與匯出值相同。使用者如果有格式化的需求,可以在前置計算程式中透過公式完成日期和數位的格式化,以正文匯出時,格式化的結果也會原樣保留。
3.2 匯出資料到 Excel 檔案
設定介面如下圖所示:

Excel 單檔案支援的資料量說明:
Excel 2003 和更早版本: 單個工作表最多支援 65536 行和 256 列。
Excel 2007 和更新版本: 單個工作表最多支援 1048576 行和 16384 列。
注:目前檔案匯出的 Excel 格式為 xlsx 。
3.2.1 Sheet 名
填寫要寫入的 Sheet 名,不填寫時則使用預設 Sheet 名稱;支援使用參數。
3.2.2 檔案拆分
「檔案拆分」適用於大數據量的檔案匯出場景,例如資料量超過 Excel 支援的最大行數上線時,使用此功能將按行數拆分資料。
注 :4.2.10.3 及之後版本,新增支援將資料按行數拆分至多個 sheet。

檔案命名說明:
資料(包括勾選「首行匯出欄位名稱」後生成的欄位名稱行)每滿足指定行數時,將生成一個新檔案,同時自動在檔案名稱後追加"_1、_2..."後綴。
![]()
Sheet 命名說明:
如果指定了 Sheet 名,則自動在 Sheet 名後追加”_1”、”_2"後綴
如果未指定 Sheet 名,則使用“Sheet1”、"Sheet2"等預設 Sheet 名

注意事項:
1)如果沒有勾選檔案拆分,檔案寫入到達 Excel 上限,則直接後端報錯處理。
2)如果勾選了「首行匯出欄位名」按鈕,檔案拆分後,每個拆分的檔案或者 Sheet 仍將首行設定為匯出欄位名稱。
3)當前檔案拆分邏輯基於輸入端拆分,如果檔案重名策略選擇了追加寫入到同一個sheet,目標sheet的存量資料不會算入按行數拆分的資料量中,這種情況,實際檔案資料量會大於指定的拆分行數。
3.2.3 其他設定項
具體介紹請參見本文 3.1 節內容。
3.3 匯出資料到自訂類型檔案
4.2.10.3 及之後版本,新增支援匯出資料到自訂檔案類型,例如 xml、json 檔案。若使用者資料實際為 xml 檔案,可使用此功能原樣匯出檔案。
設定介面如下圖所示:

| 配置項 | 說明 |
|---|---|
| 資料夾地址 | 詳情參見本文 3.1.3 節 |
| 檔案名稱 |
|
| 值來源 |
|
編碼 | 詳情參見本文 3.1.8 節 |
| 檔案重名策略 | 詳情參見本文 3.1.11 節 |
4. 特殊場景處理策略
| 場景 | 處理策略 |
|---|---|
| 檔案寫入時已有同名檔案 | 按照節點配置的檔案重名策略執行衝突處理 |
| 寫入 CSV 檔案的資料中存在 NULL/空字串 | NULL:按照空值寫入,不使用正文限定符封閉,例如("a",,"b","c") 空字串:按照空字串寫入,使用正文限定符封閉。例如("a","","b","c") |
| 寫入 CSV 檔案的資料中存在換行 | 透過正文限定符封閉,正常保留換行 |
| 寫入Excel中含有圖片、圖示等非字元類型資料 | 嘗試轉換為字串進行寫入,如果轉換失敗則拋錯處理 |
5. 範例
「檔案匯出」算子的簡單使用請參見:文件输出典型示例
