1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package main
- import (
- "log"
- "time"
- "zero/core/stores/clickhouse"
- "zero/core/stores/sqlx"
- )
- func main() {
- conn := clickhouse.New("tcp://127.0.0.1:9000")
- _, err := conn.Exec(`
- CREATE TABLE IF NOT EXISTS example (
- country_code FixedString(2),
- os_id UInt8,
- browser_id UInt8,
- categories Array(Int16),
- action_day Date,
- action_time DateTime
- ) engine=Memory
- `)
- if err != nil {
- log.Fatal(err)
- }
- conn.Transact(func(session sqlx.Session) error {
- stmt, err := session.Prepare("INSERT INTO example (country_code, os_id, browser_id, categories, action_day, action_time) VALUES (?, ?, ?, ?, ?, ?)")
- if err != nil {
- log.Fatal(err)
- }
- defer stmt.Close()
- for i := 0; i < 10; i++ {
- _, err := stmt.Exec("RU", 10+i, 100+i, []int16{1, 2, 3}, time.Now(), time.Now())
- if err != nil {
- log.Fatal(err)
- }
- }
- return nil
- })
- var items []struct {
- CountryCode string `db:"country_code"`
- OsID uint8 `db:"os_id"`
- BrowserID uint8 `db:"browser_id"`
- Categories []int16 `db:"categories"`
- ActionTime time.Time `db:"action_time"`
- }
- err = conn.QueryRows(&items, "SELECT country_code, os_id, browser_id, categories, action_time FROM example")
- if err != nil {
- log.Fatal(err)
- }
- for _, item := range items {
- log.Printf("country: %s, os: %d, browser: %d, categories: %v, action_time: %s",
- item.CountryCode, item.OsID, item.BrowserID, item.Categories, item.ActionTime)
- }
- if _, err := conn.Exec("DROP TABLE example"); err != nil {
- log.Fatal(err)
- }
- }
|