反馈已提交

网络繁忙

文件输入功能说明

  • 文档创建者:Roxy
  • 历史版本:38
  • 最近更新:Wendy123456 于 2024-11-01
  • 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 混合格式)/dbf 等

    1.2 应用场景

    用户在搭建数仓时,希望能从 FineDataLink 服务器本地或者共享目录中读取 Excel 、CSV 文件数据。

    同时可以通过 FDL 将 Excel 、CSV 文件直接上传至 FDL 服务器本地。

    1.3 功能简介

    FineDataLink 支持「文件输入」功能,可读取文件数据。如下图所示:

    2.png

    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. 功能说明

    「文件输入」算子前端日志显示的读取量,不包含表头这行数据。

    比如 Excel 数据有 100 w行,包括 1 行表头+999999行数据,「文件输入」算子读取后,前端日志会显示读取 999999 行数据。

    3.1 读取 Excel 文件

    1704444404468475.png

    3.1.1 文件来源

    需要提前配置「服务器本地数据连接」或「FTP/SFTP数据连接」且需要有该数据连接的使用权限,下拉框中才会出现选项。

    3.1.2 文件类型

    支持读取 Excel 文件。

    注1:文件类型选择 Excel 时,支持的后缀名:.xls、.xlsx、.XLS、.XLSX

    注2:Excel 需要支持满足的版本为 97~ 最新版本。

    3.1.3 读取方式

    分为两种,「文件读取」和「文件夹读取」。

    1684931229552641.png

    1)文件读取

    • 读取单个文件。

    • 文件地址:选择要读取的文件。可以使用 FineDataLink 设置的参数,详情参见:如何配置并使用参数;若文件来源是服务器本地目录,此处填写的是相对于%FDL%/webroot/WEB-INF/assets/local_files的路径,例如:/home/ftpuser/test/${time}.xlsx(/home 在 %FDL%/webroot/WEB-INF/assets/local_files路径下)。

         也可以使用 参数赋值 进行参数设置。

    注:在「文件地址」中,粘贴完整文件地址或者手动输入文件地址后,按 Enter 键保存。

    • 文件来源为「服务器本地目录」且读取单个文件时,「文件地址」处支持手动上传文件至有权限的 FDL 服务器本地目录中。上传文件名限制:上传文件名不能包含「 ? * : " < > \ / | 」,不能以空格开头。上传文件大小不能超过 100M 。4.1.4 及之后版本才支持上传重名文件,上传的重名文件将替换之前的同名文件。

    注:手动上传文件,文件需小于100M。

    1704678069189828.png

    2)文件夹读取

    可读取文件夹中的多个同格式文件。

    例如文件夹下有两个文件 test1 和 test2 ,若选择「文件夹读取」则会将文件数据合并在一起,如下图所示:

    详细示例详情参见:批量扫描文件同步数据

    注:文件夹中的 Excel 文件需要字段名相同;文件夹中的 CSV 文件需要分隔符相同。

    配置项说明
    文件夹地址

    选取要读取的文件夹。指定文件夹方式:通过界面点击选择文件夹、手动输入文件夹地址(可设置参数,输入参数后需要手动点击选中该参数)

    使用 FineDataLink 设置的参数,详情参见:如何配置并使用参数

    注:在「文件夹地址」中,粘贴完整地址或者手动输入文件夹地址后,按 Enter 键保存

    读取子文件夹若不勾选,读取时将忽略子文件夹中的文件;勾选时,读取时包括子文件夹中的文件。
    文件筛选

    允许配置筛选条件过滤文件夹下的多个文件,获取符合要求的部分文件进行读取。可通过「文件名」和「文件修改时间」来筛选文件。支持通过参数筛选

    使用 FineDataLink 设置的参数,详情参见:如何配置并使用参数

    「文件修改时间」理解示例:比如某文件夹中昨天的表是 A 和 B,今天新增表 C ,更新表 B 中的数据,「文件筛选」中筛选「文件修改时间」为今天的表,可筛选出表 C 和表 B(表 B 中的所有数据,非今天更新的数据)。

    注1:「文件修改时间」的精确度仅到分钟,暂时无法精确到秒级别。

    注2:4.1.1 及之后版本,产品内条件判断逻辑进行了统一,每个运算符的说明可参见:条件判断逻辑说明


    3.1.4 sheet 名

    填写要读取的 Sheet 名。为空时读取第一个 sheet。sheet 名称支持使用参数。

    使用 FineDataLink 设置的参数,详情参见:如何配置并使用参数

    3.1.5 读取行列范围

    指定 Excel 读取起始行和读取结束行,指定 Excel 读取起始列和读取结束列。

    数字框中要求为正整数。

    3.1.6 首行为字段名

    勾选时,将解析到的首行数据作为字段名。

    不勾选时,首行将作为实际数据解析。

    3.1.7 输出字段

    1)自动获取:

    将根据解析结果直接读取字段类型,此时「自动获取」界面下不显示输出的字段。

    1684981760841521.png

    2)手动获取:

    • 「手动获取」界面下将展示输出字段名称、输出字段类型,支持自定义字段类型,可设置字段类型为:varchar、int、long、float、double、date、timestamp。

    注:CSV 文件的情况下,不能选择 date 和 timestamp 类型。

    1684978235389217.png

    • 字段允许追加,允许删除追加的字段,但不允许对已有字段进行删除或顺序调整。

    注:追加的字段名称,不允许为空,不能包含空格,不能与其他有效字段名重复。

    10.png

    • 追加的字段如果前 N 行没有数据,则对应行值为 NULL 。

    3.2 读取 CSV 文件

    54.png

    文件来源、读取方式、首行为字段名、输出字段介绍请参见本文 3.1 节内容。

    3.2.1 文件类型

    文件类型选择 CSV 时,支持读取类 csv 文件类型。

    例如:支持的文件后缀名:csv、CSV、txt、TXT、tsv、log、dt(csv 和 xml 混合格式)/dbf 等。

    3.2.2 读取文件后缀

    当用户选择「文件读取」方式时,新增该选项。说明如下:

    • 不区分大小写。

    • 根据用户输入的文件后缀读取文件地址中的该类型文件,跳过路径下非该格式文件。

    • 支持写多种格式,以逗号为分隔符;支持读取类 CSV 文件,例如:txt/tsv/log/dt(csv和xml混合格式)/dbf 等。

    3.2.3 列分隔符

    根据指定的分隔符,分隔数据为多列。配置的分隔符需要与文件中实际的分隔符保持一致才可正常解析。

    可指定或自定义分隔符。

    1704446828613121.png

    分隔符可选择:英文逗号,制表符\t英文分号;管道符|空格ASCII字符自定义

    • 可以手动输入自定义分隔符,可以输入多个字符作为分隔符,可以是中文字符。

    • 可以手动输入十进制的 ASCII 编码,指定 ASCII 字符作为特殊的列分隔符,支持的十进制ASCII编码为0~32。

    • 文本限定符、列分隔符、行分隔符彼此不可重复。

    3.2.4 行分隔符

    可指定 CSV 中的行分隔符:

    1704446852748169.png

    CR+LF:在 Windows 系统中使用。

    LF:在 Unix、Linux 等系统中使用。

    CR:在早期的 Mac OS 系统中使用。

    文本限定符、列分隔符、行分隔符彼此不可重复。

    3.2.5 文本限定符

    用于标识数据值的开始和结束,以避免数据中包含的特殊字符干扰 CSV 文件的解析。

    1704446874267538.png

    可选择:双引号、单引号、ASCII 字符(支持的十进制ASCII编码为0~32)。

    文本限定符、列分隔符、行分隔符彼此不可重复。

    3.2.6 编码

    指定 CSV 文件编码。编码可选择 GBK、BIG5、ISO-8859-1、UTF-8、UTF-16、EUC_JP、EUC_KR、CP850、GB2312

    1704446896204132.png

    3.2.7 读取起始行

    CSV 文件可以从第 N 行开始取数。

    • 必填。默认值为 1,不允许输入 1 以下的数字。

    • 实际读取时,将从配置的起始行开始进行读取。

    • 多文件读取的情况下,对于每个文件,此配置都将生效。

    • 同时指定「起始行为字段名」时,将以读取起始行开始,取该行作为字段名行。

    3.3 自定义

    可读取 xml、json 等文件类型。

    默认获取为文本数据,一个文件一行数据,列名默认为「文件输入」,解析内容功能由后续XML解析JSON解析等算子实现。如下图所示:

    1704447187771588.png

    文件来源、读取方式、文件地址请参见本文 3.1 节。

    3.3.1 读取文件后缀

    读取方式选择「文件读取」时,新增该选项:

    • 不区分大小写。

    • 支持写多种格式,以逗号为分隔符。

    • 文件后缀不能重复。

    3.3.2 编码

    编码可选择 GBK、BIG5、ISO-8859-1、UTF-8、UTF-16、EUC_JP、EUC_KR、CP850、GB2312。如下图所示:

    1704679849604887.png

    3.3 数据预览

    「数据预览」界面如下图所示:

    23.png

    说明如下:

    • 预览数据量默认最多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。

    1704681872243281.png

    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 文件,一次性读取多个文件后保存批量扫描文件同步数据
    定时批量读取同格式的文件,文件新增频率较低
    4.0.24 及之后版本:定时批量扫描文件同步数据
    4.0.24 之前版本:4.0.24 之前版本方案
    财务报表、销售数据表、学生成绩表等 Excel 表格中,往往包含多个 Sheet,用户希望使用 FDL 读取单 Excel 多 Sheet 文件数据读取单Excel多Sheet文件数据读取文件时,「sheet 名」设置项中使用参数

    场景:

    批量读取同格式文件,文件新增频率较高

    以新增文件的方式新增数据,不更新已有文件数据

    判断新增文件方式:

    方式一:根据文件名:文件名中包含文件新增时间,例如2023-05-29库存数据

    方式二:根据文件新增时间

    适用于 4.0.24 及之后版本:定时读取新增文件读取文件时,「文件筛选」设置项中使用参数
    读取某文件夹中同格式的 Excel 和 CSV 文件,每读取一个文件,希望先对数据做处理,再保存

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

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

    读取文件时,「文件地址」设置项中使用参数

    用户业务流程中下发的文件,有特定的文件生成则代表下发完成。比如:文件下发完成后,目录下会生成与文件同名的 .ok 文件(用来判断文件是否下发完成)、.del 文件(根据值的不同判断写入方式)、.sql 文件。

    现需要将已经下发完成(生成 .ok 文件)的 csv 文件按照 .del 记录的方式进行读取入库,并且读取文件后,需要记录已经读取完成的文件,以便在任务异常重启时避免重复写入

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




    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持