clickhouse-cpp é a biblioteca cliente C++ oficial do 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 funcionalidades centrais do ClickHouse,
alguns recursos e tipos de dados talvez ainda não estejam totalmente implementados ou não tenham suporte completo.Seu feedback é extremamente 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 recursos pelo rastreador de issues em
https://github.com/ClickHouse/clickhouse-cpp/issues
Incluindo a biblioteca no seu projeto
FetchContent do CMake. Essa abordagem permite definir uma versão exata da biblioteca e compilá-la como parte do fluxo de trabalho padrão
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 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 derivados; openssl-devel no Fedora, Red Hat; ou
openssl no macOS, usando o Homebrew.
Depois que a dependência estiver disponível, vincule seu alvo ao alvo de biblioteca exportado:
Exemplos
Configurando o objeto Client
Client para estabelecer uma conexão com o ClickHouse. O exemplo a seguir
demonstra 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 depois inseridos em uma única operação usando o
método Insert, otimizado para operações eficientes de gravação em lote.
Selecionando os dados
Select e forneça um callback para processar o
resultado. Os resultados da consulta são recebidos como objetos Block, refletindo a representação de dados nativa
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