fox/db/clickhouse_test.go
2025-05-25 20:02:15 +08:00

98 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package db
import (
"fmt"
"strings"
"testing"
)
func testCreateClickHouse(_ *testing.T) *ClickHouseRepo {
host := "192.168.2.224"
port := "9000"
// port = 8123
username := "default"
password := "123456"
database := "samba"
return NewClickHouseRepo(host, port, username, password, database)
}
func testSelect(t *testing.T) {
ch := testCreateClickHouse(t)
err := ch.Open()
if err != nil {
t.Fatal(err)
}
defer ch.Close()
rows, err := ch.Select("select user_id, coins from coins_flow limit 1")
if err != nil {
t.Fatal(err)
}
defer func() { _ = rows.Close() }()
cols, err := rows.Columns()
if err != nil {
t.Fatal(err)
}
fmt.Println(strings.Join(cols, ","))
// 一行数据使用any避开数据类型问题
var vRows = make([]any, len(cols))
// 存实际的值byte数组长度以列的数量为准
var values = make([][]byte, len(cols))
for i := 0; i < len(cols); i++ {
vRows[i] = &values[i]
}
for rows.Next() {
err = rows.Scan(vRows...)
if err != nil {
fmt.Println(err.Error())
break
}
var vString []string
for _, v := range values {
vString = append(vString, string(v))
}
fmt.Println(vString, ",")
}
}
func testInsert(t *testing.T) {
ch := testCreateClickHouse(t)
err := ch.Open()
if err != nil {
t.Fatal(err)
}
defer ch.Close()
_, err = ch.Exec("INSERT INTO coins_flow(user_id, coins) VALUES (11,11)", 11, 11)
if err != nil {
t.Fatal(err)
}
// last, err := result.LastInsertId()
// if err != nil {
// t.Fatal(err)
// }
// fmt.Println(last)
}
func testDelete(t *testing.T) {
ch := testCreateClickHouse(t)
err := ch.Open()
if err != nil {
t.Fatal(err)
}
defer ch.Close()
_, err = ch.Exec("DELETE FROM coins_flow WHERE user_id = 11 AND coins = 11")
if err != nil {
t.Fatal(err)
}
// last, err := result.LastInsertId()
// if err != nil {
// t.Fatal(err)
// }
// fmt.Println(last)
}
func TestClickHouse(t *testing.T) {
testSelect(t)
// testInsert(t)
testDelete(t)
}