跳转到主要内容
递归遍历目录,并返回一个包含文件元数据 (路径、大小、类型、权限、修改时间) 以及可选文件内容的表。 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

返回的列

类型描述
pathString包含该条目的目录 (不包括文件/目录名本身) 。
nameString文件或目录名 (路径的最后一个组件) 。
fileString (ALIAS of name)name 列的别名。
typeEnum8文件类型:'none''not_found''regular''directory''symlink''block''character''fifo''socket''unknown'
sizeNullable(UInt64)文件大小 (以字节为单位,仅适用于普通文件) 。对于非普通文件 (目录、符号链接等) 以及发生错误时,为 NULL
depthUInt16递归深度。被查询目录本身及其直接子项为 0,更深一层的条目为 1,以此类推。
modification_timeNullable(DateTime64(6))最后修改时间,精度为微秒。发生错误时为 NULL
is_symlinkBool该条目是否为符号链接。
contentNullable(String)文件内容 (仅适用于普通文件) 。对于非普通文件 (目录、符号链接等) ,为 NULL。读取错误会引发异常。读取此列会触发实际的文件 I/O,因此如果不需要,建议省略。
owner_readBool所有者具有读取权限。
owner_writeBool所有者具有写入权限。
owner_execBool所有者具有执行权限。
group_readBool所属组具有读取权限。
group_writeBool所属组具有写入权限。
group_execBool所属组具有执行权限。
others_readBool其他用户具有读取权限。
others_writeBool其他用户具有写入权限。
others_execBool其他用户具有执行权限。
set_gidBoolSet-GID 位。
set_uidBoolSet-UID 位。
sticky_bitBool粘滞位。
只会计算查询中实际使用到的列,因此仅选择部分列 (尤其是不包含 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;
最后修改于 2026年6月10日