ClickHouse C++ client – Connecting to ClickHouse with C++ client libraries
ClickHouse C++ client is a client library for C++ development allowing applications to connect to ClickHouse databases based on the clickhouse-native-client library. The library was originally developed by the ClickHouse core community development teams and we at ChistaDATA maintain the fork for the same on GitHub.
Supported data types
- Array(T)
- Date
- DateTime, DateTime64
- DateTime([timezone]), DateTime64(N, [timezone])
- Decimal32, Decimal64, Decimal128
- Enum8, Enum16
- FixedString(N)
- Float32, Float64
- IPv4, IPv6
- Nullable(T)
- String
- LowCardinality(String) or LowCardinality(FixedString(N))
- Tuple
- UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64
- Int128
- UUID
How to build ClickHouse C++ client ?
$ mkdir build . $ cd build $ cmake .. [-DBUILD_TESTS=ON] $ make
Test program on how to use ClickHouse C++ client
#include <clickhouse/client.h> using namespace clickhouse; /// Initialize client connection. Client client(ClientOptions().SetHost("localhost")); /// Create a table. client.Execute("CREATE TABLE IF NOT EXISTS test.numbers (id UInt64, name String) ENGINE = Memory"); /// Insert some values. { Block block; auto id = std::make_shared<ColumnUInt64>(); id->Append(1); id->Append(7); auto name = std::make_shared<ColumnString>(); name->Append("one"); name->Append("seven"); block.AppendColumn("id" , id); block.AppendColumn("name", name); client.Insert("test.numbers", block); } /// Select values inserted in the previous step. client.Select("SELECT id, name FROM test.numbers", [] (const Block& block) { for (size_t i = 0; i < block.GetRowCount(); ++i) { std::cout << block[0]->As<ColumnUInt64>()->At(i) << " " << block[1]->As<ColumnString>()->At(i) << "\n"; } } ); /// Delete table. client.Execute("DROP TABLE test.numbers");