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 для необычных файлов (каталогов, символьных ссылок и т. д.). Ошибки чтения приводят к исключению. Чтение этого столбца вызывает фактический файловый ввод-вывод, поэтому не выбирайте его без необходимости.
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;
Navigation