98 lines
1.9 KiB
Go
98 lines
1.9 KiB
Go
![]() |
package repo
|
|||
|
|
|||
|
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)
|
|||
|
}
|