Табличная функция filesystem
Рекурсивно обходит каталог и возвращает таблицу с метаданными файлов (путями, размерами, типами, правами доступа, временем изменения) и, при необходимости, содержимым файлов.
В режиме clickhouse-server путь должен находиться в каталоге user_files_path. Символические ссылки внутри user_files_path, указывающие за его пределы, обрабатываются, но возвращаются только те записи, путь которых (через символическую ссылку) начинается с user_files_path.
В режиме clickhouse-local ограничений на путь нет.
| Параметр | Описание |
|---|
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 для необычных файлов (каталогов, символьных ссылок и т. д.). Ошибки чтения приводят к исключению. Чтение этого столбца вызывает фактический файловый ввод-вывод, поэтому не выбирайте его без необходимости. |
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 | Бит sticky. |
Вычисляются только те столбцы, которые фактически используются в запросе, поэтому запрашивать только часть столбцов (особенно без 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;
Последнее изменение 10 июня 2026 г.