跳转到主内容
跳转到主内容

filesystem 表函数

Not supported in 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

返回的列

类型描述
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_bitBoolSticky 位。

仅会计算查询中实际用到的列,因此只选择列的子集 (尤其是不包含 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;