离开你是傻是对是错
是看破是软弱
这结果是爱是恨或者是什么
如果是种解脱
怎么会还有眷恋在我心窝
那么爱你为什么
🎵 黄品源/莫文蔚《那么爱你为什么》
go
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/ClickHouse/clickhouse-go/v2"
)
func main() {
// 配置连接参数
conn, err := clickhouse.Open(&clickhouse.Options{
Addr: []string{"127.0.0.1:9000"}, // ClickHouse的TCP地址
Auth: clickhouse.Auth{
Database: "default", // 数据库名
Username: "default", // 用户名
Password: "", // 密码
},
DialTimeout: 5 * time.Second,
Compression: &clickhouse.Compression{
Method: clickhouse.CompressionLZ4,
},
})
if err != nil {
log.Fatalf("连接 ClickHouse 失败: %v", err)
}
// 确保连接成功
if err := conn.Ping(context.Background()); err != nil {
log.Fatalf("无法连接到 ClickHouse: %v", err)
}
fmt.Println("成功连接到 ClickHouse!")
// 执行查询:获取 id 和 title 字段
rows, err := conn.Query(context.Background(), "SELECT id, title FROM my_table")
if err != nil {
log.Fatalf("查询执行失败: %v", err)
}
defer rows.Close()
// 迭代查询结果
for rows.Next() {
var id uint64
var title string
// 扫描每一行的结果
if err := rows.Scan(&id, &title); err != nil {
log.Fatalf("读取结果失败: %v", err)
}
fmt.Printf("id: %d, title: %s\n", id, title)
}
// 检查是否有迭代中的错误
if err := rows.Err(); err != nil {
log.Fatalf("查询中发生错误: %v", err)
}
}