Перейти к основному содержимому
Перейти к основному содержимому

Табличная функция 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 для файлов других типов (каталогов, символических ссылок и т. д.). При ошибках чтения генерируется исключение. Чтение этого столбца вызывает фактические операции ввода-вывода с файлом, поэтому не включайте его, если он не нужен.
owner_readBoolУ владельца есть право на чтение.
owner_writeBoolУ владельца есть право на запись.
owner_execBoolУ владельца есть право на исполнение.
group_readBoolУ группы есть право на чтение.
group_writeBoolУ группы есть право на запись.
group_execBoolУ группы есть право на исполнение.
others_readBoolУ остальных есть право на чтение.
others_writeBoolУ остальных есть право на запись.
others_execBoolУ остальных есть право на исполнение.
set_gidBoolБит Set-GID.
set_uidBoolБит Set-UID.
sticky_bitBoolSticky bit.

Вычисляются только те столбцы, которые фактически используются в запросе, поэтому выбирать подмножество столбцов (особенно без 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;