首批通过分布式安全可靠测评,为关键业务系统打造
FILES 表函数
更新时间:2026-07-14 20:43:11
描述
FILES(...) 用于把外部文件位置映射为可查询行集,支持在 SELECT ... FROM 中直接读取外部数据。
语法
FILES(location_expr, format_expr [, pattern_expr])
常见写法如下:
SELECT * FROM
FILES(
location = '/data/',
format (TYPE = 'csv', field_delimiter = ',', parse_header = true),
pattern = 'datafiles$'
);
参数说明
location_expr:外部数据位置。format_expr:文件格式子句,写法为FORMAT (...)或format (...)(关键字大小写不敏感)。括号内为逗号分隔的格式选项列表,必须包含一项TYPE = '<文件类型>',其中<文件类型>为字符串字面量,取'CSV'、'PARQUET'或'ORC'。各选项的语义、默认值与 CREATE EXTERNAL TABLE 中的format_type_options一致;在FILES中既可以使用文档外表语法中的大写形式(如FIELD_DELIMITER),也可以使用小写下划线形式(如field_delimiter),二者等价。pattern_expr:可选,用于按文件名模式过滤。
format(...) 中常用选项说明
TYPE 指定后,可按需追加下列选项(仅列出 FILES 读取平面文件时常用项;更完整的语法树见上文链接中的外表章节)。
当 TYPE = 'CSV' 时,还可指定例如:
| 选项 | 含义概要 |
|---|---|
LINE_DELIMITER / line_delimiter |
行分隔符,默认 '\n'。 |
FIELD_DELIMITER / field_delimiter |
列分隔符,默认 '\t'。 |
ESCAPE / escape |
转义字符,长度 1 字节;默认值为反斜杠 \。 |
FIELD_OPTIONALLY_ENCLOSED_BY / field_optionally_enclosed_by |
包裹字段值的字符,默认可为空。 |
ENCODING / encoding |
文件字符集;不指定时默认 UTF8MB4。 |
NULL_IF / null_if |
视为 NULL 的字符串列表,语法为 null_if = ('串1', '串2', ...)。 |
SKIP_HEADER / skip_header |
跳过文件头的行数,取非负整数。 |
PARSE_HEADER / parse_header |
是否将首行解析为列名,取 TRUE/FALSE(或 true/false)。 |
SKIP_BLANK_LINES / skip_blank_lines |
是否跳过空白行,默认 FALSE。 |
TRIM_SPACE / trim_space |
是否去掉字段首尾空格,默认 FALSE。 |
EMPTY_FIELD_AS_NULL / empty_field_as_null |
是否把空字段当作 NULL,默认 FALSE。 |
IGNORE_LAST_EMPTY_COLUMN / ignore_last_empty_column |
行末若多出一个空字段是否忽略,默认 TRUE。 |
COMPRESSION / compression |
压缩格式:GZIP、ZSTD、DEFLATE、NONE、SNAPPY_BLOCK 等。 |
PARALLEL_PARSE_ON_SINGLE_FILE / parallel_parse_on_single_file |
是否对单文件并行解析,默认 TRUE。 |
PARALLEL_PARSE_FILE_SIZE_THRESHOLD / parallel_parse_file_size_threshold |
触发并行解析的文件大小阈值(字节),默认 256 MB。 |
MAX_ROW_LENGTH / max_row_length |
单行最大长度(字节),默认 2 MB,用于并行解析阶段。 |
注意
不要同时使用 SKIP_HEADER/skip_header 与 PARSE_HEADER/parse_header,二者语义冲突,会报错。
注意
当数据文件中包含真正的 NULL 值(非字面量字符串 "NULL")时,必须显式设置 FIELD_OPTIONALLY_ENCLOSED_BY/field_optionally_enclosed_by,且取值不能为空。详见外表文档中对应说明。
当 TYPE = 'PARQUET' 或 TYPE = 'ORC' 时,在常见查询场景中一般只需指定 TYPE 即可;若还需叠加其它读入选项,名称与含义与外表 FORMAT = (...) 子句一致,参见 CREATE EXTERNAL TABLE 中的语法定义与参数说明。
使用说明
FILES(...)可直接用于SELECT的FROM子句。- 在
LOAD DATA场景中,也可通过FROM FILES(...)指定数据来源。