Clickhouse基础配置相关

安装

  1. 检查系统系统是否支持
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
  1. rpm安装clickhouse
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
sudo yum install -y clickhouse-server clickhouse-client

启动

sudo /etc/init.d/clickhouse-server start

连接

clickhouse-client # or "clickhouse-client --password" if you set up a password.

示例

$ ./clickhouse-client
ClickHouse client version 0.0.18749.
Connecting to localhost:9000.
Connected to ClickHouse server version 0.0.18749.

:) SELECT 1

SELECT 1

┌─1─┐
│ 1 │
└───┘

1 rows in set. Elapsed: 0.003 sec.

:)

范例

package main

import (
  "database/sql"
  "fmt"
  "log"
  "time"

  "github.com/ClickHouse/clickhouse-go"
)

func main() {
  connect, err := sql.Open("clickhouse", "tcp://127.0.0.1:9000?debug=true")
  if err != nil {
    log.Fatal(err)
  }
  if err := connect.Ping(); err != nil {
    if exception, ok := err.(*clickhouse.Exception); ok {
      fmt.Printf("[%d] %s \n%s\n", exception.Code, exception.Message, exception.StackTrace)
    } else {
      fmt.Println(err)
    }
    return
  }

  _, err = connect.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)
  }
  var (
    tx, _   = connect.Begin()
    stmt, _ = tx.Prepare("INSERT INTO example (country_code, os_id, browser_id, categories, action_day, action_time) VALUES (?, ?, ?, ?, ?, ?)")
  )
  defer stmt.Close()

  for i := 0; i < 100; i++ {
    if _, err := stmt.Exec(
      "RU",
      10+i,
      100+i,
      clickhouse.Array([]int16{1, 2, 3}),
      time.Now(),
      time.Now(),
    ); err != nil {
      log.Fatal(err)
    }
  }

  if err := tx.Commit(); err != nil {
    log.Fatal(err)
  }

  rows, err := connect.Query("SELECT country_code, os_id, browser_id, categories, action_day, action_time FROM example")
  if err != nil {
    log.Fatal(err)
  }
  defer rows.Close()

  for rows.Next() {
    var (
      country               string
      os, browser           uint8
      categories            []int16
      actionDay, actionTime time.Time
    )
    if err := rows.Scan(&country, &os, &browser, &categories, &actionDay, &actionTime); err != nil {
      log.Fatal(err)
    }
    log.Printf("country: %s, os: %d, browser: %d, categories: %v, action_day: %s, action_time: %s", country, os, browser, categories, actionDay, actionTime)
  }

  if err := rows.Err(); err != nil {
    log.Fatal(err)
  }

  if _, err := connect.Exec("DROP TABLE example"); err != nil {
    log.Fatal(err)
  }
}

可视化界面DBeaver

DBeaver连接Clickhouse

其他相关

Clickhouse数据类型
clickhouse-go

你可能感兴趣的:(Clickhouse,Clickhouse,Go)