Recorre recursivamente un directorio y devuelve una tabla con metadatos de archivos (rutas, tamaños, tipos, permisos, fechas de modificación) y, opcionalmente, el contenido de los archivos.
En el modo clickhouse-server, la ruta debe estar dentro del directorio user_files_path. Se siguen los enlaces simbólicos dentro de user_files_path que apuntan fuera de él, pero solo se devuelven las entradas cuya ruta (a través del enlace simbólico) comienza con user_files_path.
En el modo clickhouse-local, no hay restricciones de ruta.
Sintaxis
filesystem([path])Argumentos
| Parámetro | Descripción |
|---|---|
path |
El directorio que se va a listar. Puede ser una ruta absoluta (debe estar dentro de user_files_path cuando se ejecuta en modo server) o una ruta relativa a user_files_path. Si está vacío o se omite, el valor predeterminado es user_files_path. |
Columnas devueltas
| Columna | Tipo | Descripción |
|---|---|---|
path |
String |
Directorio que contiene la entrada (no incluye el nombre del archivo o directorio en sí). |
name |
String |
Nombre del archivo o directorio (el último componente de la ruta). |
file |
String (ALIAS de name) |
Alias de la columna name. |
type |
Enum8 |
Tipo de archivo: 'none', 'not_found', 'regular', 'directory', 'symlink', 'block', 'character', 'fifo', 'socket', 'unknown'. |
size |
Nullable(UInt64) |
Tamaño del archivo en bytes (para archivos normales). NULL para archivos no normales (directorios, enlaces simbólicos, etc.) y en caso de error. |
depth |
UInt16 |
Profundidad de recursión. 0 para el propio directorio consultado y sus hijos inmediatos, 1 para las entradas un nivel más abajo, y así sucesivamente. |
modification_time |
Nullable(DateTime64(6)) |
Fecha y hora de la última modificación con precisión de microsegundos. NULL en caso de error. |
is_symlink |
Bool |
Indica si la entrada es un enlace simbólico. |
content |
Nullable(String) |
Contenido del archivo (para archivos normales). NULL para archivos no normales (directorios, enlaces simbólicos, etc.). Los errores de lectura generan una excepción. Leer esta columna desencadena la E/S real del archivo, así que omítela si no es necesaria. |
owner_read |
Bool |
El propietario tiene permiso de lectura. |
owner_write |
Bool |
El propietario tiene permiso de escritura. |
owner_exec |
Bool |
El propietario tiene permiso de ejecución. |
group_read |
Bool |
El grupo tiene permiso de lectura. |
group_write |
Bool |
El grupo tiene permiso de escritura. |
group_exec |
Bool |
El grupo tiene permiso de ejecución. |
others_read |
Bool |
Otros tienen permiso de lectura. |
others_write |
Bool |
Otros tienen permiso de escritura. |
others_exec |
Bool |
Otros tienen permiso de ejecución. |
set_gid |
Bool |
Bit Set-GID. |
set_uid |
Bool |
Bit Set-UID. |
sticky_bit |
Bool |
Sticky bit. |
Solo se calculan las columnas que realmente se usan en la consulta, por lo que seleccionar un subconjunto de columnas (especialmente si se omite content) es eficiente.
Ejemplos
Listar archivos en user_files
SELECT name, type, size, depth
FROM filesystem()
ORDER BY name;Buscar archivos grandes
SELECT path, name, size
FROM filesystem()
WHERE type = 'regular' AND size > 1000000
ORDER BY size DESC;Leer el contenido del archivo
SELECT name, content
FROM filesystem('my_directory')
WHERE name LIKE '%.csv';Mostrar solo los elementos hijos inmediatos
SELECT name, type
FROM filesystem('my_directory')
WHERE depth = 0;