Saltar al contenido principal

Formatos de datos de entrada y salida

ClickHouse admite la mayoría de los formatos de datos de texto y binarios conocidos. Esto permite integrarlo fácilmente en casi cualquier pipeline de datos para aprovechar las ventajas de ClickHouse.

Formatos de entrada

Los formatos de entrada se usan para:
  • Analizar los datos proporcionados en las sentencias INSERT
  • Ejecutar consultas SELECT sobre tablas basadas en archivos, como File, URL o HDFS
  • Leer diccionarios
Elegir el formato de entrada adecuado es crucial para una ingestión de datos eficiente en ClickHouse. Con más de 70 formatos compatibles, seleccionar la opción de mayor rendimiento puede afectar significativamente a la velocidad de inserción, el uso de CPU y memoria, y la eficiencia general del sistema. Para ayudarte a orientarte entre estas opciones, realizamos un benchmark del rendimiento de la ingestión en distintos formatos, lo que reveló estos puntos clave:
  • El formato Native es el formato de entrada más eficiente, ya que ofrece la mejor compresión, el menor uso de recursos y una sobrecarga mínima de procesamiento del lado del servidor.
  • La compresión es esencial: LZ4 reduce el tamaño de los datos con un coste mínimo de CPU, mientras que ZSTD ofrece una compresión mayor a costa de un mayor uso de CPU.
  • La preordenación tiene un impacto moderado, ya que ClickHouse ya ordena de forma eficiente.
  • La agrupación en lotes mejora significativamente la eficiencia: los lotes más grandes reducen la sobrecarga de inserción y mejoran el rendimiento.
Para profundizar en los resultados y las buenas prácticas, lee el análisis completo del benchmark. Para ver los resultados completos de las pruebas, explora el dashboard en línea FastFormats.

Formatos de salida

Los formatos de salida compatibles se usan para:
  • Organizar los resultados de una consulta SELECT
  • Realizar operaciones INSERT en tablas basadas en archivos

Resumen de formatos

Los formatos compatibles son: Puede controlar algunos parámetros de procesamiento de formatos mediante la configuración de ClickHouse. Para obtener más información, consulte la sección Configuración.

Esquema de formato

El nombre del archivo que contiene el esquema de formato se establece mediante la opción format_schema. Es necesario establecer esta opción cuando se utiliza uno de los formatos Cap'n Proto o Protobuf. El esquema de formato es una combinación de un nombre de archivo y el nombre de un tipo de mensaje dentro de ese archivo, separados por dos puntos, por ejemplo, schemafile.proto:MessageType. Si el archivo tiene la extensión estándar del formato (por ejemplo, .proto para Protobuf), puede omitirse y, en ese caso, el esquema de formato tendrá el aspecto schemafile:MessageType. Si introduce o exporta datos mediante el cliente en modo interactivo, el nombre de archivo especificado en el esquema de formato puede contener una ruta absoluta o una ruta relativa al directorio actual del cliente. Si utiliza el cliente en modo por lotes, la ruta al esquema debe ser relativa por motivos de seguridad. Si introduce o exporta datos mediante la interfaz HTTP, el nombre de archivo especificado en el esquema de formato debe estar ubicado en el directorio especificado en format_schema_path de la configuración del servidor.

Ignorar errores

Algunos formatos, como CSV, TabSeparated, TSKV, JSONEachRow, Template, CustomSeparated y Protobuf, pueden omitir una fila incorrecta si se produce un error de análisis y continuar analizando desde el comienzo de la siguiente fila. Consulte los ajustes input_format_allow_errors_num e input_format_allow_errors_ratio. Limitaciones:
  • En caso de error de análisis, JSONEachRow omite todos los datos hasta el salto de línea (o EOF), por lo que las filas deben estar delimitadas por \n para contar los errores correctamente.
  • Template y CustomSeparated usan el delimitador después de la última columna y el delimitador entre filas para encontrar el comienzo de la siguiente fila, por lo que la omisión de errores solo funciona si al menos uno de ellos no está vacío.
Última modificación el 2 de julio de 2026