Рекурсивно обходит каталог и возвращает таблицу с метаданными файлов (путями, размерами, типами, правами доступа, временем изменения) и, при необходимости, содержимым файлов.
В режиме 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;