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
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
file_engine_table:
/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:
Uso en ClickHouse-local
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:
Detalles de la implementación
- Se pueden ejecutar varias consultas
SELECTde forma concurrente, pero las consultasINSERTdeben esperar unas a otras. - Se admite la creación de un archivo nuevo mediante una consulta
INSERT. - Si el archivo existe,
INSERTle añadirá nuevos valores. - No se admite:
ALTERSELECT ... 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 esNULL._time— Fecha y hora de la última modificación del archivo. Tipo:Nullable(DateTime). Si se desconoce la hora, el valor esNULL.
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
formattiene 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étodommapno se aplica a clickhouse-server (está pensado para clickhouse-local). Valor predeterminado:preadpara clickhouse-server,mmappara clickhouse-local.