clickhouse-cpp es la biblioteca cliente oficial de C++ para ClickHouse, que proporciona una interfaz rápida y con tipado seguro
para ClickHouse mediante su protocolo binario nativo.
Las instrucciones de compilación, los ejemplos de uso y la documentación adicional están disponibles en el
repositorio de GitHub del proyecto: https://github.com/ClickHouse/clickhouse-cpp.
La biblioteca está en desarrollo activo. Aunque ya admite la funcionalidad principal de ClickHouse,
es posible que algunas funcionalidades y tipos de datos aún no estén totalmente implementados o no sean compatibles.Sus comentarios son muy valiosos y ayudan a orientar la priorización de nuevas funcionalidades y
mejoras. Si encuentra limitaciones, funcionalidades ausentes o comportamientos inesperados, por favor
comparta sus observaciones o solicitudes de funcionalidades a través del gestor de incidencias en
https://github.com/ClickHouse/clickhouse-cpp/issues
Incluir la biblioteca en su proyecto
FetchContent de CMake. Este enfoque le permite fijar una versión concreta de la biblioteca y
compilarla como parte de su flujo de trabajo habitual con CMake.
WITH_OPENSSL habilita la compatibilidad con TLS en la biblioteca y es necesaria al conectarse a
ClickHouse Cloud u otros despliegues de ClickHouse con SSL habilitado. Aunque puede omitirse en conexiones sin TLS,
por lo general se recomienda habilitarla.
La compilación con compatibilidad con SSL requiere que los paquetes de desarrollo de OpenSSL estén instalados. Instale
libssl-dev en Debian, Ubuntu o sus derivados; openssl-devel en Fedora, Red Hat; o
openssl en macOS, usando Homebrew.
Una vez que la dependencia esté disponible, enlace su objetivo con el objetivo de biblioteca exportado:
Ejemplos
Configuración del objeto cliente
Client para establecer una conexión con ClickHouse. El siguiente ejemplo
muestra cómo conectarse a una instancia local de ClickHouse, donde no se requiere contraseña y SSL no está
habilitado.
Creación de tablas y ejecución de consultas sin datos
Execute.
El mismo enfoque se aplica a otras sentencias, como ALTER TABLE, DROP, etc.
Inserción de datos
Block y complételo con objetos de columna que coincidan con el
esquema de la tabla. Los datos se añaden columna por columna y luego se insertan en una sola operación mediante el
método Insert, que está optimizado para inserciones por lotes eficientes.
Selección de datos
Select y proporcione una función de devolución de llamada para procesar el
resultado. Los resultados de la consulta se entregan como objetos Block, lo que refleja la representación de datos nativa
orientada a columna de ClickHouse.
Tipos de datos compatibles
UInt8,UInt16,UInt32,UInt64,Int8,Int16,Int32,Int64UInt128,Int128Decimal32,Decimal64,Decimal128Float32,Float64DateDateTime,DateTime64DateTime([timezone]),DateTime64(N, [timezone])UUIDEnum8,Enum16StringFixedString(N)LowCardinality(String)yLowCardinality(FixedString(N))Nullable(T)Array(T)TupleMapIPv4,IPv6Point,Ring,Polygon,MultiPolygon