go get github.com/ClickHouse/clickhouse-go
package model
import (
"database/sql"
"fmt"
"log"
_ "github.com/ClickHouse/clickhouse-go"
)
var CkDB *sql.DB
func SetupClickhouse(c Config) {
// tcp://localhost:9000?username=default&password=&database=default
dsn := fmt.Sprintf("tcp://%s:%s?username=%s&password=%s&database=%s",
c.Host,
c.Port,
c.Username,
c.Password,
c.Database)
var err error
CkDB, err = sql.Open("clickhouse", dsn)
if err != nil {
log.Fatalf("gormDB.Setup err: %v", err)
}
}
func test_clickhouse() {
util.ConnectClickhouse()
defer model.CkDB.Close()
sql := "SELECT id,isbn13 FROM bigdata.dw_dim_metadata_book_cip_all WHERE isbn13 <> '' and summary = '' and id > ? order by id asc limit ?"
rows, err := model.CkDB.Query(sql, 0, 10)
if err!= nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var id string
var isbn13 string
rows.Scan(&id, &isbn13)
fmt.Println(id, isbn13)
}
}
由于 clickhouse 是 OLAP 数据库,所以在更新和删除数据的时候会比较麻烦,并不是传统的SQL方式,需要查看官方文档来实现。
因篇幅问题不能全部显示,请点此查看更多更全内容