go使用clickhouse,增删改查示例

2023-03-27  本文已影响0人  php转go

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
    }
}

上一篇 下一篇

猜你喜欢

热点阅读