Saltar al contenido principal
El motor de tabla File guarda los datos en un archivo en uno de los formatos de archivo compatibles (TabSeparated, Native, etc.). Casos de uso:
  • Exportación de datos de ClickHouse a un archivo.
  • Conversión de datos de un formato a otro.
  • Actualización de datos en ClickHouse mediante la edición de un archivo en un disco.
Este motor no está disponible actualmente en ClickHouse Cloud; utilice en su lugar la función de tabla S3.

Uso en ClickHouse Server

File(Format)
El parámetro Format especifica uno de los formatos de archivo disponibles. Para ejecutar consultas SELECT, el formato debe ser compatible con la entrada y, para ejecutar consultas INSERT, con la salida. Los formatos disponibles se enumeran en la sección Formatos. ClickHouse no permite especificar una ruta del sistema de archivos para File. Usará la carpeta definida por la opción path en la configuración del servidor. Al crear una tabla con File(Format), se crea un subdirectorio vacío en esa carpeta. Cuando se escriben datos en esa tabla, se guardan en el archivo data.Format de ese subdirectorio. Puede crear manualmente este subdirectorio y archivo en el sistema de archivos del servidor y luego ATTACH a la definición de la tabla con el nombre correspondiente, para poder consultar los datos de ese archivo.
Tenga cuidado con esta funcionalidad, porque ClickHouse no realiza un seguimiento de los cambios externos en este tipo de archivos. El resultado de escrituras simultáneas a través de ClickHouse y fuera de ClickHouse no está definido.

Ejemplo

1. Configure la tabla file_engine_table:
CREATE TABLE file_engine_table (name String, value UInt32) ENGINE=File(TabSeparated)
De forma predeterminada, ClickHouse creará la carpeta /var/lib/clickhouse/data/default/file_engine_table. 2. Crea manualmente /var/lib/clickhouse/data/default/file_engine_table/data.TabSeparated con el siguiente contenido:
$ cat data.TabSeparated
one 1
two 2
3. Consulte los datos:
SELECT * FROM file_engine_table
┌─name─┬─value─┐
│ one  │     1 │
│ two  │     2 │
└──────┴───────┘

Uso en ClickHouse-local

En clickhouse-local, el motor File acepta una ruta de archivo además de Format. Los flujos predeterminados de entrada/salida pueden especificarse mediante nombres numéricos o legibles para humanos, como 0 o stdin, 1 o stdout. También es posible leer y escribir archivos comprimidos según un parámetro adicional del motor o la extensión del archivo (gz, br o xz). Ejemplo:
$ echo -e "1,2\n3,4" | clickhouse-local -q "CREATE TABLE table (a Int64, b Int64) ENGINE = File(CSV, stdin); SELECT a, b FROM table; DROP TABLE table"

Detalles de la implementación

  • Se pueden ejecutar varias consultas SELECT de forma concurrente, pero las consultas INSERT deben esperar unas a otras.
  • Se admite la creación de un archivo nuevo mediante una consulta INSERT.
  • Si el archivo existe, INSERT le añadirá nuevos valores.
  • No se admite:
    • ALTER
    • SELECT ... SAMPLE
    • Índices
    • Replicación

PARTITION BY

PARTITION BY — Opcional. Es posible crear archivos independientes particionando los datos según una clave de partición. En la mayoría de los casos, no necesita una clave de partición y, si la necesita, por lo general no debería ser más granular que por mes. El particionado no acelera las consultas (a diferencia de la expresión ORDER BY). Nunca debe usar un particionado demasiado granular. No particione sus datos por identificadores ni nombres de clientes (en su lugar, haga que el identificador o el nombre del cliente sea la primera columna de la expresión ORDER BY). Para particionar por mes, use la expresión toYYYYMM(date_column), donde date_column es una columna de tipo Date. Los nombres de las particiones aquí tienen el formato "YYYYMM".

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, el valor es NULL.
  • _time — Fecha y hora de la última modificación del archivo. Tipo: Nullable(DateTime). Si se desconoce la hora, el valor es NULL.

Configuración

  • engine_file_empty_if_not_exists - permite leer datos vacíos de un archivo que no existe. Deshabilitado de forma predeterminada.
  • engine_file_truncate_on_insert - permite truncar el archivo antes de insertar en él. Deshabilitado de forma predeterminada.
  • engine_file_allow_create_multiple_files - permite crear un archivo nuevo en cada inserción si el format tiene sufijo. Deshabilitado de forma predeterminada.
  • engine_file_skip_empty_files - permite omitir archivos vacíos durante la lectura. Deshabilitado de forma predeterminada.
  • storage_file_read_method - método de lectura de datos desde el archivo de almacenamiento; uno de: read, pread, mmap. El método mmap no se aplica a clickhouse-server (está pensado para clickhouse-local). Valor predeterminado: pread para clickhouse-server, mmap para clickhouse-local.
Última modificación el 10 de junio de 2026