Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

filesystem

ClickHouse Cloud 不支持此功能

递归遍历目录,并返回一个包含文件元数据 (路径、大小、类型、权限、修改时间) 以及可选文件内容的表。

clickhouse-server 模式下,路径必须位于 user_files_path 目录内。对于 user_files_path 内部指向外部的符号链接,也会继续跟随,但只会返回其路径 (经由该符号链接) 以 user_files_path 开头的条目。

clickhouse-local 模式下,路径不受限制。

语法

filesystem([path])

参数

参数 描述
path 要列出的目录。可以是绝对路径 (在服务器模式下必须位于 user_files_path 内) ,也可以是相对于 user_files_path 的路径。如果为空或省略,则默认为 user_files_path

返回的列

类型 描述
path String 包含该条目的目录 (不包括文件/目录名本身) 。
name String 文件或目录名 (路径的最后一个组件) 。
file String (ALIAS of name) name 列的别名。
type Enum8 文件类型:'none''not_found''regular''directory''symlink''block''character''fifo''socket''unknown'
size Nullable(UInt64) 文件大小 (以字节为单位,仅适用于普通文件) 。对于非普通文件 (目录、符号链接等) 以及发生错误时,为 NULL
depth UInt16 递归深度。被查询目录本身及其直接子项为 0,更深一层的条目为 1,以此类推。
modification_time Nullable(DateTime64(6)) 最后修改时间,精度为微秒。发生错误时为 NULL
is_symlink Bool 该条目是否为符号链接。
content Nullable(String) 文件内容 (仅适用于普通文件) 。对于非普通文件 (目录、符号链接等) ,为 NULL。读取错误会引发异常。读取此列会触发实际的文件 I/O,因此如果不需要,建议省略。
owner_read Bool 所有者具有读取权限。
owner_write Bool 所有者具有写入权限。
owner_exec Bool 所有者具有执行权限。
group_read Bool 所属组具有读取权限。
group_write Bool 所属组具有写入权限。
group_exec Bool 所属组具有执行权限。
others_read Bool 其他用户具有读取权限。
others_write Bool 其他用户具有写入权限。
others_exec Bool 其他用户具有执行权限。
set_gid Bool Set-GID 位。
set_uid Bool Set-UID 位。
sticky_bit Bool 粘滞位。

只会计算查询中实际使用到的列,因此仅选择部分列 (尤其是不包含 content) 会更高效。

示例

列出 user_files 中的文件

SELECT name, type, size, depth
FROM filesystem()
ORDER BY name;

查找大文件

SELECT path, name, size
FROM filesystem()
WHERE type = 'regular' AND size > 1000000
ORDER BY size DESC;

读取文件内容

SELECT name, content
FROM filesystem('my_directory')
WHERE name LIKE '%.csv';

仅列出直接子项

SELECT name, type
FROM filesystem('my_directory')
WHERE depth = 0;
Navigation