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:
FormatoEntradaSalida
TabSeparated
TabSeparatedRaw
TabSeparatedWithNames
TabSeparatedWithNamesAndTypes
TabSeparatedRawWithNames
TabSeparatedRawWithNamesAndTypes
Template
TemplateIgnoreSpaces
CSV
CSVWithNames
CSVWithNamesAndTypes
CustomSeparated
CustomSeparatedWithNames
CustomSeparatedWithNamesAndTypes
SQLInsert
Values
Vertical
JSON
JSONAsString
JSONAsObject
JSONStrings
JSONColumns
JSONColumnsWithMetadata
JSONCompact
JSONCompactStrings
JSONCompactColumns
JSONEachRow
PrettyJSONEachRow
JSONEachRowWithProgress
JSONStringsEachRow
JSONStringsEachRowWithProgress
JSONCompactEachRow
JSONCompactEachRowWithNames
JSONCompactEachRowWithNamesAndTypes
JSONCompactEachRowWithProgress
JSONCompactStringsEachRow
JSONCompactStringsEachRowWithNames
JSONCompactStringsEachRowWithNamesAndTypes
JSONCompactStringsEachRowWithProgress
JSONObjectEachRow
BSONEachRow
TSKV
Pretty
PrettyNoEscapes
PrettyMonoBlock
PrettyNoEscapesMonoBlock
PrettyCompact
PrettyCompactNoEscapes
PrettyCompactMonoBlock
PrettyCompactNoEscapesMonoBlock
PrettySpace
PrettySpaceNoEscapes
PrettySpaceMonoBlock
PrettySpaceNoEscapesMonoBlock
Prometheus
Protobuf
ProtobufSingle
ProtobufList
Avro
AvroConfluent
Parquet
ParquetMetadata
Arrow
ArrowStream
ORC
One
Npy
RowBinary
RowBinaryWithNames
RowBinaryWithNamesAndTypes
RowBinaryWithDefaults
Native
Buffers
Null
Hash
XML
CapnProto
LineAsString
LineAsStringWithNames
LineAsStringWithNamesAndTypes
Regexp
RawBLOB
MsgPack
MySQLDump
DWARF
Markdown
Form
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 10 de junio de 2026