Saltar al contenido principal
A menudo tenemos que trabajar con datos en formatos de texto personalizados. Puede tratarse de un formato no estándar, JSON no válido o un CSV dañado. El uso de parsers estándar como CSV o JSON no funciona en todos estos casos. Pero ClickHouse ofrece una solución con los potentes formatos Template y Regex.

Importación basada en Template

Supongamos que queremos importar datos del siguiente archivo de log:
Podemos usar el formato Template para importar estos datos. Tenemos que definir una cadena de plantilla con marcadores de posición para los valores de cada fila de los datos de entrada:
Vamos a crear una tabla para importar nuestros datos en ella:
Para importar datos con una plantilla determinada, tenemos que guardar la cadena de la plantilla en un archivo (row.template en nuestro caso):
Definimos el nombre de una columna y la regla de escape con el formato ${name:escaping}. Aquí hay varias opciones disponibles, como CSV, JSON, Escaped o Quoted, que implementan las reglas de escape correspondientes. Ahora podemos usar el archivo indicado como argumento de la opción de configuración format_template_row al importar datos (ten en cuenta que los archivos de plantilla y de datos no deben tener un símbolo \n adicional al final del archivo):
Y podemos comprobar que los datos se cargaron en la tabla:

Omisión de espacios en blanco

Considere usar TemplateIgnoreSpaces, que permite omitir los espacios en blanco entre delimitadores en Template:

Exportación de datos con Template

También podemos exportar datos a cualquier formato de texto con Template. En este caso, tenemos que crear dos archivos: Plantilla del conjunto de resultados, que define la estructura del conjunto de resultados completo:
Aquí, rows_read y time son métricas del sistema disponibles para cada petición. Mientras que data representa las filas generadas (${data} siempre debe aparecer como el primer marcador de posición en este archivo), a partir de una plantilla definida en un archivo de plantilla de filas:
Ahora, usemos estas Template para exportar la siguiente consulta:

Exportación a archivos HTML

Los resultados basados en plantillas también se pueden exportar a archivos mediante la cláusula INTO OUTFILE. Generemos archivos HTML a partir de los formatos conjunto de resultados y fila proporcionados:

Exportación a XML

El formato Template puede utilizarse para generar todo tipo de archivos de texto, incluido XML. Basta con proporcionar una plantilla adecuada y realizar la exportación. Considere también usar el formato XML para obtener resultados XML estándar, incluidos los metadatos:

Importación de datos basada en expresiones regulares

El formato Regexp cubre casos más complejos en los que los datos de entrada deben procesarse de una forma más sofisticada. Analicemos nuestro archivo de ejemplo error.log, pero esta vez capturemos el nombre del archivo y el protocolo para guardarlos en columnas independientes. Primero, preparemos una tabla nueva para ello:
Ahora podemos importar datos a partir de una expresión regular:
ClickHouse insertará los datos de cada grupo de captura en la columna correspondiente según su orden. Veamos los datos:
De forma predeterminada, ClickHouse generará un error si hay filas sin coincidencia. Si prefiere omitirlas, habilite la opción format_regexp_skip_unmatched:

Otros formatos

ClickHouse ofrece compatibilidad con muchos formatos, tanto de texto como binarios, para cubrir diversos escenarios y plataformas. Explora más formatos y formas de trabajar con ellos en los siguientes artículos: Y consulta también clickhouse-local, una herramienta portable con todas las funciones para trabajar con archivos locales y remotos sin necesidad de ClickHouse server.
Última modificación el 12 de junio de 2026