ClickHouse是一种列式数据库管理系统,它专门用于处理大量的数据,并且可以在秒级别内执行复杂的分析查询。它支持高度压缩的列式存储,这使得它非常适合用于存储和查询大量的数据,例如日志和事件数据。ClickHouse还支持高可用性和水平扩展,这使得它非常适合用于构建高性能的分布式系统。
下面是使用示例,也可以根据自己的喜好进行封装操作
import (
"database/sql"
"fmt"
_ "github.com/ClickHouse/clickhouse-go"
)
func main() {
db, err := sql.Open("clickhouse", "tcp://localhost:9000?debug=true")
if err != nil {
fmt.Println(err)
return
}
defer db.Close()
// 查询
rows, err := db.Query("SELECT * FROM my_table")
if err != nil {
fmt.Println(err)
return
}
defer rows.Close()
for rows.Next() {
var col1 string
var col2 int
err := rows.Scan(&col1, &col2)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(col1, col2)
}
// 插入
stmt, err := db.Prepare("INSERT INTO my_table (col1, col2) VALUES (?, ?)")
if err != nil {
fmt.Println(err)
return
}
defer stmt.Close()
_, err = stmt.Exec("value1", 123)
if err != nil {
fmt.Println(err)
return
}
// 更新
stmt, err = db.Prepare("UPDATE my_table SET col1 = ? WHERE col2 = ?")
if err != nil {
fmt.Println(err)
return
}
defer stmt.Close()
_, err = stmt.Exec("new_value", 123)
if err != nil {
fmt.Println(err)
return
}
// 删除
stmt, err = db.Prepare("DELETE FROM my_table WHERE col2 = ?")
if err != nil {
fmt.Println(err)
return
}
defer stmt.Close()
_, err = stmt.Exec(123)
if err != nil {
fmt.Println(err)
return
}
}
网友评论