1. 概述
1.1 版本说明
| FineDataLink 版本 | 功能变动 |
|---|---|
| 4.0.14 | - |
| 4.2.13.4 | 文件输入来源支持:Server Message Block |
1.2 应用场景
用户在搭建数仓时,希望能从 FineDataLink 服务器本地或者共享目录中读取 Excel 、CSV 文件数据。
同时可以通过 FDL 将 Excel 、CSV 文件直接上传至 FDL 服务器本地。
1.3 功能简介
FineDataLink 支持「文件输入」功能,可读取文件数据。如下图所示:

1.4 前提条件
1)数据来源支持的数据源类型如下表所示:
| 支持的数据源 | 说明 |
|---|---|
| 配置服务器本地目录数据连接 | 需要新建一个「服务器本地目录」数据连接,并将要读取的文件放到%FDL%/webroot/WEB-INF/assets/local_files路径下,并且有该数据连接的使用权限 |
| 配置FTP/SFTP数据连接 | 需要配置 FTP/SFTP数据连接,并且有该数据连接的使用权限 |
| 配置Amazon S3数据源 | 需要配置 Amazon S3 数据连接,并且有该数据连接的使用权限 |
| 配置Server Message Block数据源 | 需要配置 Server Message Block 数据连接,并且有该数据连接的使用权限 |
2)4.0.24 版本之前,仅支持上传后缀小写的 Excel 和 CSV 文件,对于大写后缀的 Excel 和 CSV 文件上传校验不通过。若文件存在,但无法读取,请检查文件后缀是否为大写 .CSV/.XLSX,请手动修改为小写。
2. 功能说明
2.1 支持读取的文件类型
| 文件后缀名 | 详情 |
|---|---|
| .xls、.xlsx、.XLS、.XLSX | 文件输入-读取Excel文件 |
| csv、CSV、txt、TXT、tsv、log、dt(csv 和 xml 混合格式)等 | 文件输入-读取CSV文件 |
| 支持读取 xml、json 等文件类型 | 文件输入-自定义 |
2.2 数据预览
「数据预览」界面如下图所示:

说明如下:
预览数据量默认最多20行;使用前5000行数据中出现的字段与首行列数(如果指定了首行为字段名称)取并集,作为预览时展示的字段,且仅取数采样前5000条数据,但请不要担心,在输出数据时为全量输出。
如果首行字段为合并单元格的情况,将合并单元格进行拆分后,以「字段名称+数字」的方式对拆分后的字段命名,如三个单元格合并后的首行单元格为「姓名」,则命名为姓名、姓名1、姓名2..:
如果CSV首行字段有重名情况,以「字段名称+数字」的方式对重复字段命名,如重复字段为姓名,则重复字段命名为姓名1、姓名2...。
未勾选首行包含字段名时,字段名称以「column+数字」的方式对解析出的字段依次命名,如column、column1、column2...。
2.3 特殊场景处理策略
| 场景 | 处理策略 |
|---|---|
| 批量读取的文件中,存在个别文件数据格式与模板文件不符 | 选择文件夹时,将满足筛选条件,按文件名首字母排序的第一个文件作为模板。 如果此格式不符的文件,字段个数与类型与模板文件相同,则不会报错,将视为正确的文件读取 如果此格式不符的文件,字段个数或类型与模板文件不同,则此文件报错,算子执行报错,并打印日志记录当前报错时读取的文件名 |
| 读取的文件中,位于末尾的字段在采样行数之后才有数据 | 字段输出配置中,在末尾追加字段,配置字段名和字段类型 读取时前N行会被读取为NULL,有数据的行正常读取 |
| 自定义输出的字段类型与实际数据类型不兼容 | 将报错 |
3. 升级兼容说明
1)FDL 工程的定时任务中使用了「文件输入」算子,其中文件类型选择 CSV,读取方式为文件夹读取:
若设置了文件筛选条件,升级到 4.1.4 及之后版本后,filename 包含.txt、.TXT、.csv、.CSV,与升级前配置的筛选条件为且关系。
若没有设置文件筛选条件,升级到 4.1.4 及之后版本后,filename 默认包含.txt、.TXT、.csv、.CSV。

2)4.2.10.3 版本,文件输入节点中,若原「sheet名」配置中引用参数,升级后变为「自定义条件>Sheet名称」设置,并引用参数;若原「sheet名」配置中直接选择 sheet,升级后变为「直接选取」设置,并选择 sheet。
4. 读取的 Excel 数据条件
单元格格式与读取后字段的关系说明:
Excel单元格格式 | 解析字段格式 |
|---|---|
| 常规 | 基于原始值判断,可解析成FDL支持的类型,则自动解析,无法解析视为字符串。 |
| 数值 | 数值 |
| 货币 | 数值 |
| 会计专用 | 数值 |
| 日期、时间 | 日期或时间戳 只有年月日解析成日期、含有日期时间解析成时间戳。 |
| 百分比 | 数值 |
| 分数 | 数值 |
| 科学计数法 | 数值 |
| 文本 | 字符串 |
1)CSV字段类型问题
CSV读取后,输出只有字符串和数字两种类型,数字需要保证不丢精度。对于时间类型,如2022-11-10类型的时间,解析为字符串;时间戳类型的时间解析成数字。
2)合并单元格读取问题
对于合并的单元格,拆分单元格读取,复制值到每个拆分后的单元格进行读取。
3)字段为空的情况
如果标题字段存在空值,则将空值以「column+数字」的方式补充。
如果数字字段存在空值,填NULL
4)不支持 Excel 的多选Sheet读取。
5)不支持文件名通配符。
6)不支持读取设密码的Excel文件。
5. 应用示例
| 简介 | 文档 |
|---|---|
| 读取单个文件 | 文件输入算子读取单个文件 |
| 读取某文件夹中同格式的 Excel 和 CSV 文件,一次性读取多个文件后保存 | 批量扫描文件同步数据 |
| 财务报表、销售数据表、学生成绩表等 Excel 表格中,往往包含多个 Sheet,用户希望使用 FDL 读取单 Excel 多 Sheet 文件数据 | 读取单Excel多Sheet文件数据(读取文件时,「sheet 名」设置项中使用参数) |
场景: 批量读取同格式文件,文件新增频率较高 以新增文件的方式新增数据,不更新已有文件数据 判断新增文件方式: 方式一:根据文件名:文件名中包含文件新增时间,例如2023-05-29库存数据 方式二:根据文件新增时间 | 适用于 4.0.24 及之后版本:定时读取新增文件(读取文件时,「文件筛选」设置项中使用参数) |
| 读取某文件夹中同格式的 Excel 和 CSV 文件,每读取一个文件,希望先对数据做处理,再保存 | (读取文件时,「文件地址」设置项中使用参数) |
| 用户业务流程中下发的文件,有特定的文件生成则代表下发完成。比如:文件下发完成后,目录下会生成与文件同名的 .ok 文件(用来判断文件是否下发完成)、.del 文件(根据值的不同判断写入方式)、.sql 文件。 现需要将已经下发完成(生成 .ok 文件)的 csv 文件按照 .del 记录的方式进行读取入库,并且读取文件后,需要记录已经读取完成的文件,以便在任务异常重启时避免重复写入 | (读取文件时,「文件地址」设置项中使用参数) |
| 用户的业务数据以压缩包的形式每日进行下发,存储在 FTP 文件服务器对应的日期目录下,已经下发完成的压缩包文件会生成同名的 .ok 文件 用户需要将部分压缩包文件传输到另外一个位置,并进行解压,希望已经传输成功的文件,下次任务运行时不会再重复传输 | FTP服务器中白名单文件自动传输与解压 |
