An auxiliary utility for generating Rust structures from ClickHouse DB schemas for the official clickhouse-rs crate.
cargo install ch2rsThe crate enables rustls-tls client feature by default, which allows to work with HTTPS URLs.
If rustls-tls does not work in your use case, you can install the crate with native-tls instead:
cargo install ch2rs --features native-tls$ ch2rs --helpch2rs 0.1.7
USAGE:
ch2rs [FLAGS] [OPTIONS] <table>
FLAGS:
-D Generate `Deserialize` instances
-h, --help Prints help information
--owned Generate only owned types
-S Generate `Serialize` instances
-V, --version Prints version information
OPTIONS:
-B <bytes>... Add `#[serde(with = "serde_bytes")]` to the provided column
-d <database> A database where the table is placed in [default: default]
-I <ignore>... Ignore a specified column
-O <overrides>... Override the type of the provided column
-p <password>
--derive <trait>... Add `#[derive(<trait>)]` to the generated types
-T <types>... Override the type, e.g. 'Decimal(18, 9)=fixnum::FixedPoint<i64, typenum::U9>'
-U <url> ClickHouse server's URL [default: localhost:8123]
--temporal <mode> Temporal mapping: raw|time|chrono [default: raw]
-u <user>
ARGS:
<table> The table's name
-
raw (default): uses primitive Rust types:
- Date →
u16, Date32 →i32 - DateTime →
u32, DateTime64(_) →i64 - Time →
i32, Time64(_) →i64
- Date →
-
time: uses the
timecrate types- Date/Date32:
time::Date - DateTime/DateTime64:
time::OffsetDateTime - Time/Time64:
time::Duration - Requires in your project:
timedependency andclickhousefeaturetimeclickhouse = { version = "…", features = ["time"] }
- Date/Date32:
-
chrono: uses the
chronocrate types- Date/Date32:
chrono::NaiveDate - DateTime/DateTime64:
chrono::DateTime<chrono::Utc> - Time/Time64:
chrono::Duration - Requires in your project:
chronodependency andclickhousefeaturechronoclickhouse = { version = "…", features = ["chrono"] }
- Date/Date32:
Select mode via --temporal {raw|time|chrono}.
See snapshots.