clickhouse-cpp é a biblioteca cliente C++ oficial do ClickHouse, oferecendo uma
interface rápida e com segurança de tipos para o ClickHouse por meio de seu protocolo binário nativo.
As instruções de compilação, os exemplos de uso e a 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 não 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, por favor
compartilhe suas observações ou solicitações de novos recursos pelo 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 ao se conectar ao
ClickHouse Cloud ou a outras implantações do ClickHouse com SSL habilitado. Embora possa ser omitida em conexões sem TLS,
geralmente é recomendável habilitá-la.
A compilação 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 e Red Hat; ou
openssl no macOS, usando o Homebrew.
Depois que a dependência estiver disponível, vincule seu target ao target de biblioteca exportado:
Exemplos
Definindo 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 não é necessário usar senha e o SSL não está
habilitado.
Criando tabelas e executando consultas sem retorno de dados
Execute.
A mesma abordagem se aplica a outras instruções, como ALTER TABLE, DROP etc.
Inserindo dados
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 um callback para processar o
resultado. Os resultados da consulta são retornados como objetos Block, refletindo a representação de dados nativa e
orientada a 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