#clickhouse #yandex #client #query #column #row

点击屋

Yandex ClickHouse 的简单客户端库

4 个版本

0.1.3 2019年2月20日
0.1.2 2019年2月19日
0.1.1 2019年2月3日
0.1.0 2019年2月3日

#15#yandex

每月 22 次下载

MIT 许可证

37KB
476

简单的 Yandex ClickHouse 客户端

如何使用

use klickenhaus::ClickhouseClient;

let ch = ClickhouseClient::new("https://127.0.0.1:8123");
assert!(ch.ping());
ch.query("DROP TABLE IF EXISTS test_table").expect("query failed");
ch.query("CREATE TABLE IF NOT EXISTS test_table (a Int32, b Enum8('a' = 1, 'b' = 2), c String, d Array(String)) ENGINE=Log").expect("query failed");
ch.query("INSERT INTO test_table (a, b, c, d) VALUES (10, 'a', 'test', ['abc', 'def']), (20, 'b', 'test2\ttest3\ntest4\rtest5', ['a\r\rbc', 'def', 'efg'])").expect("query failed");
ch.insert("INSERT INTO test_table (a, b, c, d)")
// Insert by columns
    .column(vec![50, 60, 70, 80])
    .column(vec!["a", "b", "a", "b"])
    .column(vec!["str1", "str2", "str3", "str4"])
    .column(vec![vec!["aaa", "bbb", "ccc"], vec!["ee", "ffff"], vec![], vec!["yo"]])
// Or rows
    .row((90, "a", "string", vec!["1", "2", "3"])).expect("can't insert row")
    .exec().expect("query failed");
assert_eq!(7, ch.select_row("SELECT count(*) FROM test_table").expect("query")[0].parse::<u32>().expect("count value"));
for row in ch.select("SELECT * FROM test_table").expect("query failed") {
    println!("'{}', '{}', '{}', {}", &row[0], &row[1], &row[2], &row[3]);
}
ch.query("DROP TABLE test_table").expect("query failed");

依赖关系

~20MB
~429K SLoC