clickhouse-cpp é a biblioteca cliente oficial em C++ para ClickHouse, fornecendo uma
interface rápida e com segurança de tipos para o ClickHouse usando seu protocolo binário nativo.
Instruções de compilação, exemplos de uso e documentação adicional estão disponíveis no
repositório GitHub do projeto: https://github.com/ClickHouse/clickhouse-cpp.
A biblioteca está em desenvolvimento ativo. Embora já ofereça suporte às principais funcionalidades do ClickHouse,
alguns recursos e tipos de dados talvez ainda não estejam totalmente implementados ou tenham suporte completo.Seu feedback é muito valioso e ajuda a orientar a priorização de novos recursos e
melhorias. Se você encontrar limitações, funcionalidades ausentes ou comportamento inesperado,
compartilhe suas observações ou pedidos de recursos no rastreador de issues em
https://github.com/ClickHouse/clickhouse-cpp/issues
Incluindo a biblioteca ao seu projeto
FetchContent do CMake. Essa abordagem permite fixar uma versão exata da biblioteca e compilá-la como parte do fluxo de trabalho normal
do CMake.
WITH_OPENSSL habilita o suporte a TLS na biblioteca e é necessária para se conectar ao
ClickHouse Cloud ou a outras implantações do ClickHouse com SSL habilitado. Embora possa ser omitida em
conexões sem TLS, em geral é recomendável mantê-la habilitada.
Compilar com suporte a SSL exige que os pacotes de desenvolvimento do OpenSSL estejam instalados. Instale
libssl-dev no Debian, Ubuntu ou seus derivados; openssl-devel no Fedora, Red Hat; ou
openssl no macOS, usando o Homebrew.
Depois que a dependência estiver disponível, vincule seu target ao alvo de biblioteca exportado:
Exemplos
Configurando o objeto cliente
Client para estabelecer uma conexão com o ClickHouse. O exemplo a seguir
mostra como se conectar a uma instância local do ClickHouse, na qual nenhuma senha é necessária e o SSL não está
ativado.
Criando tabelas e executando consultas sem retornar dados
Execute.
A mesma abordagem se aplica a outras instruções, como ALTER TABLE, DROP etc.
Inserindo dados
tabela, construa um Block e preencha-o com objetos de coluna que correspondam ao
esquema da tabela. Os dados são adicionados coluna por coluna e, em seguida, inseridos em uma única operação usando o
método Insert, que é otimizado para gravações em lote eficientes.
Selecionando os dados
Select e forneça uma callback para processar o
resultado. Os resultados da consulta são entregues como objetos Block, refletindo a representação nativa de dados
orientada por colunas do ClickHouse.
Tipos de dados suportados
UInt8,UInt16,UInt32,UInt64,Int8,Int16,Int32,Int64UInt128,Int128Decimal32,Decimal64,Decimal128Float32,Float64DateDateTime,DateTime64DateTime([timezone]),DateTime64(N, [timezone])UUIDEnum8,Enum16StringFixedString(N)LowCardinality(String)eLowCardinality(FixedString(N))Nullable(T)Array(T)TupleMapIPv4,IPv6Point,Ring,Polygon,MultiPolygon