Saltar al contenido principal

Función de tabla file

Un motor de tabla que proporciona una interfaz de tipo tabla para hacer SELECT desde archivos e INSERT en ellos, similar a la función de tabla s3. Use file cuando trabaje con archivos locales y s3 cuando trabaje con buckets de almacenamiento de objetos como S3, GCS o MinIO. La función file puede usarse en consultas SELECT e INSERT para leer archivos o escribir en ellos.

Sintaxis

Para las consultas SELECT, path también puede ser una expresión que devuelve un Array(String):

Argumentos

Cuando se omite el argumento structure, ClickHouse infiere el esquema a partir del propio formato. Los distintos formatos generan diferentes nombres y tipos de columna predeterminados. Para ver el esquema de un formato específico, use la función de tabla format con DESC.Por ejemplo:

Valor devuelto

Una tabla que permite leer o escribir datos en un archivo.

Ejemplos de escritura en un archivo

Escribir en un archivo TSV

Como resultado, los datos se escriben en el archivo test.tsv:

Escritura particionada en varios archivos TSV

Si especifica una expresión PARTITION BY al insertar datos en una función de tabla de tipo file, se crea un archivo independiente para cada partición. Dividir los datos en archivos separados ayuda a mejorar el rendimiento de las operaciones de lectura.
Como resultado, los datos se escriben en tres archivos: test_1.tsv, test_2.tsv y test_3.tsv.

Ejemplos para leer desde File

SELECT de un archivo CSV

Primero, establece user_files_path en la configuración del servidor y prepara el archivo test.csv:
Luego, carga los datos de test.csv en una tabla y selecciona sus dos primeras filas:

Insertar datos de un archivo en una tabla

Lectura de datos desde table.csv, ubicado en archive1.zip o archive2.zip:

Globs en la ruta

Las rutas pueden usar globs. Los archivos deben coincidir con el patrón completo de la ruta, no solo con el sufijo o el prefijo. Hay una excepción: si la ruta hace referencia a un directorio existente y no usa globs, se añadirá implícitamente un * a la ruta para que se seleccionen todos los archivos del directorio.
  • * — Representa una cantidad arbitraria de caracteres, excepto /, incluida la cadena vacía.
  • ? — Representa un único carácter cualquiera.
  • {some_string,another_string,yet_another_one} — Sustituye cualquiera de las cadenas 'some_string', 'another_string', 'yet_another_one'. Las cadenas pueden contener el símbolo /.
  • {N..M} — Representa cualquier número >= N y <= M.
  • ** - Representa todos los archivos dentro de una carpeta de forma recursiva.
Las construcciones con {} son similares a las funciones de tabla remote y hdfs.

Ejemplos

Ejemplo Supongamos que hay estos archivos con las siguientes rutas relativas:
  • some_dir/some_file_1
  • some_dir/some_file_2
  • some_dir/some_file_3
  • another_dir/some_file_1
  • another_dir/some_file_2
  • another_dir/some_file_3
Consulta el número total de filas de todos los archivos:
Una expresión de ruta alternativa que produce el mismo resultado:
Consulte el número total de filas de some_dir usando el * implícito:
Si tu lista de archivos contiene rangos numéricos con ceros a la izquierda, usa la construcción con llaves para cada dígito por separado o ?.
Ejemplo Consulta el número total de filas en los archivos llamados file000, file001, … , file999:
Ejemplo Consulta el número total de filas de todos los archivos dentro del directorio big_dir/ de forma recursiva:
Ejemplo Consulta el número total de filas de todos los archivos file002 dentro de cualquier carpeta del directorio big_dir/, de forma recursiva:

Columnas virtuales

  • _path — Ruta del archivo. Tipo: LowCardinality(String).
  • _file — Nombre del archivo. Tipo: LowCardinality(String).
  • _size — Tamaño del archivo en bytes. Tipo: Nullable(UInt64). Si se desconoce el tamaño del archivo, el valor es NULL.
  • _time — Hora de la última modificación del archivo. Tipo: Nullable(DateTime). Si se desconoce la hora, el valor es NULL.

Configuración use_hive_partitioning

Cuando la configuración use_hive_partitioning se establece en 1, ClickHouse detecta el particionado con estilo Hive en la ruta (/name=value/) y permite usar las columnas de partición como columnas virtuales en la consulta. Estas columnas virtuales tendrán los mismos nombres que en la ruta particionada. Ejemplo Usar una columna virtual creada con particionado con estilo Hive

Ajustes

Última modificación el 25 de junio de 2026