ClickHouse C# Client
The official C# client for connecting to ClickHouse. The client source code is available in the GitHub repository. Originally developed by Oleg V. Kozlyuk.
Supported .NET Versions
ClickHouse.Driver
supports the following .NET versions:
- .NET Framework 4.6.2
- .NET Framework 4.8
- .NET Standard 2.1
- .NET 6.0
- .NET 8.0
- .NET 9.0
Installation
Install the package from NuGet:
Or using the NuGet Package Manager:
Usage
Creating a Connection
Create a connection using a connection string:
Creating a Table
Create a table using standard SQL syntax:
Inserting Data
Insert data using parameterized queries:
Bulk Insert
Performing SELECT Queries
Execute SELECT queries and process results:
Raw streaming
Supported Data Types
ClickHouse.Driver
supports the following ClickHouse data types:
Boolean Type
Bool
(bool)
Numeric Types:
Int8
(sbyte)Int16
(short)Int32
(int)Int64
(long)Int128
(BigInteger)Int256
(BigInteger)UInt8
(byte)UInt16
(ushort)UInt32
(uint)UInt64
(ulong)UInt128
(BigInteger)UInt256
(BigInteger)Float32
(float)Float64
(double)Decimal
(decimal)Decimal32
(decimal)Decimal64
(decimal)Decimal256
(BigDecimal)
String Types
String
(string)FixedString
(string)
Date and Time Types
Date
(DateTime)Date32
(DateTime)DateTime
(DateTime)DateTime32
(DateTime)DateTime64
(DateTime)
Network Types
IPv4
(IPAddress)IPv6
(IPAddress)
Geo Types
Point
(Tuple)Ring
(Array of Points)Polygon
(Array of Rings)
Complex Types
Array
(Array of any type)Tuple
(Tuple of any types)Nullable
(Nullable version of any type)
DateTime handling
ClickHouse.Driver
tries to correctly handle timezones and DateTime.Kind
property. Specifically:
DateTime
values are returned as UTC. User can then convert them themselves or use ToLocalTime()
method on DateTime
instance.
When inserting, DateTime
values are handled in following way:
- UTC
DateTime
are inserted as is, because ClickHouse stores them in UTC internally - Local
DateTime
are converted to UTC according to user's local timezone settings - Unspecified
DateTime
are considered to be in target column's timezone, and hence are converted to UTC according to that timezone