1. 概述
1.1 版本
| FineDataLink 版本 | 功能变动 |
|---|---|
| 4.0.14 | - |
| 4.2.10.3 | 1)读取方式优化:
2)「多文件合并读取」时,新增「容错机制」配置项 3)原「Sheet 名」功能变更为「Sheet筛选」,支持:直接选取、自定义条件、所有sheet 4)输出字段中:
|
| 历史版本更新 | ||||||||
|
1.2 功能简介
本文介绍如何使用「文件输入」算子,读取 Excel 文件。
1.3 支持的数据源类型
支持读取服务器本地目录、FTP/SFTP、Amazon S3、Server Message Block中的文件数据。详情请参见:前提条件
2. 功能说明
1)「文件输入」算子前端日志显示的读取量,不包含表头这行数据。
比如 Excel 数据有 100 w行,包括 1 行表头+999999行数据,「文件输入」算子读取后,前端日志会显示读取 999999 行数据。
2)「文件输入」算子中,文件地址、文件夹地址、文件筛选、sheet筛选设置项中支持使用参数,参数使用方法请参见:如何配置并使用参数

2.1 文件来源
详情请参见:
2.2 文件类型
文件类型选择「Excel」时:
支持的 Excel 文件后缀名:.xls、.xlsx、.XLS、.XLSX
Excel 需要支持满足的版本为 97~ 最新版本
2.3 读取方式
4.2.10.3 之前版本读取方式为:文件读取、文件夹读取;4.2.10.3 及之后版本读取方式更名为:单文件读取、多文件合并读取。
2.3.1 单文件读取
读取单个 Excel 文件。

| 设置项 | 说明 |
|---|---|
| 文件地址 | 1)选择要读取的文件;支持输入参数 2)若文件来源是「服务器本地目录」,此处填写的是相对于%FDL%/webroot/WEB-INF/assets/local_files的路径,例如:/home/ftpuser/test/${time}.xlsx(/home 在 %FDL%/webroot/WEB-INF/assets/local_files路径下) 注:在「文件地址」中,粘贴完整文件地址或者手动输入文件地址后,按 Enter 键保存。 3)文件来源为「服务器本地目录」且读取单个文件时,「文件地址」处支持手动上传文件至有权限的 FDL 服务器本地目录中。上传文件名限制:上传文件名不能包含「 ? * : " < > \ / | 」,不能以空格开头;上传文件大小不能超过 100M
|
2.3.2 多文件合并读取
可读取文件夹中的多个同格式文件,将文件数据合并在一起。文件夹中的 CSV 文件需要分隔符相同;文件夹中的 Excel 文件不需要字段名相同,但建议不同文件中字段顺序相同。
注1:文本类型为 「CSV」、「自定义」时,若需要读取的文件夹中包含多种格式数据,且仅需要读取一种文件类型,则在读取的时候需要进行文件筛选,筛选文件名中包含 CSV 或者 Excel 的指定文件,否则会默认读取文件夹中的所有类型的文件。
注2:文件输入算子中读取文件夹中的文件时,是并发读取的,最多并发读取 20 个文件。

例如文件夹下有两个文件 test1 和 test2 ,若选择「文件夹读取」则会将文件数据合并在一起,如下图所示:
详细示例详情参见:批量扫描文件同步数据
| 点击展开更多 |
![]() |
| 配置项 | 说明 |
|---|---|
| 文件夹地址 | 选取要读取的文件夹。指定文件夹方式:通过界面点击选择文件夹、手动输入文件夹地址(可设置参数,输入参数后需要手动点击选中该参数) 注:在「文件夹地址」中,粘贴完整地址或者手动输入文件夹地址后,按 Enter 键保存 |
| 读取子文件夹 | 若不勾选,读取时将忽略子文件夹中的文件;勾选时,读取时包括子文件夹中的文件。 |
| 文件筛选 | 允许配置筛选条件过滤文件夹下的多个文件,获取符合要求的部分文件进行读取。可通过 fileName(文件名)和 lastModifiedTime(文件修改时间)来筛选文件。支持通过参数筛选。 「lastModifiedTime」理解示例:比如某文件夹中昨天的表是 A 和 B,今天新增表 C ,更新表 B 中的数据,「文件筛选」中筛选「lastModifiedTime」为今天的表,可筛选出表 C 和表 B(表 B 中的所有数据,非今天更新的数据)。 注1:「文件修改时间」的精确度仅到分钟,暂时无法精确到秒级别;如果是新增文件,修改时间一般是新建文件时间,使用「文件修改时间」可以筛选到;但如果新增文件是其他文件复制过来的,文件修改时间与之前文件保持一致。 注2:4.1.1 及之后版本,产品内条件判断逻辑进行了统一,每个运算符的说明可参见:条件判断逻辑说明
|
| 容错机制 | 4.2.10.3 及之后版本,新增「容错机制」配置项 通过「多文件合并读取」读取多个文件时,如果其中一个文件报错,将继续执行下一个文件,不影响其他文件的读取 注:连续出错 20 次后将会报错 |
2.4 sheet筛选
4.2.10.3 之前版本,该功能为「sheet名」,支持选择某一个要读取的 Sheet 名。为空时读取第一个 sheet。sheet 名称支持使用参数。
4.2.10.3 及之后版本,该功能改名为「sheet筛选」,支持:直接选取、自定义条件、所有sheet。
注:Sheet 筛选时,以单个文件为单位,如果一个文件里找不到符合条件的 Sheet,将会报错。
| 配置项 | 说明 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 直接选取 | 支持通过名称选择工作表,支持多选。为空默认读取第一个 Sheet
| ||||||||||||
| 自定义条件 | 支持通过 Sheet名称、Sheet 序号读取工作表:
| ||||||||||||
| 所有sheet | 读取所有 sheet |
2.5 读取行列范围
指定 Excel 读取起始行和读取结束行,指定 Excel 读取起始列和读取结束列。
数字框中要求为正整数。

2.6 首行为字段名
勾选时,将解析到的首行数据作为字段名。
不勾选时,首行将作为实际数据解析。
2.7 输出字段
1)有两种获取方式,说明见下表:
| 获取方式 | 说明 |
|---|---|
| 自动获取 | 将根据解析结果直接读取字段类型 |
| 手动获取 | 1)「手动获取」界面下将展示输出字段名称、输出字段类型,支持自定义字段类型,可设置字段类型为:varchar、int、long、float、double、date、timestamp。 注:CSV 文件的情况下,不能选择 date 和 timestamp 类型。
2)字段允许追加,允许删除追加的字段,但不允许对已有字段进行删除或顺序调整。追加的字段如果前 N 行没有数据,则对应行值为 NULL 。 4.2.10.3 及之后版本,支持删除已获取的字段。 注:字段名规则可参考文档:字段设置
3)4.2.10.3 及之后版本,增加「读取列」信息,数据是通过读取列定位获取的,该列展示每个字段对应的绝对列索引。 注:内置字段的读取列不展示。
|
2)4.2.6.1 及之后版本,支持添加内置字段:fileName(文件名)、filePath(文件路径)、lastModifiedTime(文件修改时间),在配置中可添加三个内置字段作为输出字段。

4.2.10.3 及之后版本,新增内置字段:sheetName(sheet名)。
注:支持修改内置字段的字段名,限制 30 字符,不能与其他有效字段重名。
当配置了内置字段后,数据预览和实际运行时都会新增该列内容。预览效果如下:

3)若 FTP 获取文件以及文件夹的时间(lastModifiedTime)比实际服务器上的时间晚 8 h 或时间错误等情况,需要修改配置文件,此操作会影响文件夹条件中的时间过滤。
修改 /etc/vsftpd/vsftpd.conf 配置文件,在最下面一行增加:
use_localtime=YES
重启 FTP
service vsftpd restart
