chdb-go
chDB go bindings and chDB cli.
Install
- Download and install
libchdb
- run
make update_libchdb
to download and extract libchdb.so. or
- run
make install
to install libchdb.so
- Build
chdb-go
- Run
chdb-go
with or without persistent --path
chdb-go CLI
- Simple mode
./chdb-go "SELECT 123"
./chdb-go "SELECT 123" JSON
- Interactive mode
./chdb-go # enter interactive mode, but data will be lost after exit
./chdb-go --path /tmp/chdb # interactive persistent mode
chdb-io/chdb-go [main] » ./chdb-go
Enter your SQL commands; type 'exit' to quit.
:) CREATE DATABASE IF NOT EXISTS testdb;
Go lib Example
package main
import (
"fmt"
"os"
"path/filepath"
"github.com/chdb-io/chdb-go/chdb"
)
func main() {
// Stateless Query (ephemeral)
result, err := chdb.Query("SELECT version()", "CSV")
if err != nil {
fmt.Println(err)
}
fmt.Println(result)
tmp_path := filepath.Join(os.TempDir(), "chdb_test")
defer os.RemoveAll(tmp_path)
// Stateful Query (persistent)
session, _ := chdb.NewSession(tmp_path)
defer session.Cleanup()
_, err = session.Query("CREATE DATABASE IF NOT EXISTS testdb; " +
"CREATE TABLE IF NOT EXISTS testdb.testtable (id UInt32) ENGINE = MergeTree() ORDER BY id;")
if err != nil {
fmt.Println(err)
return
}
_, err = session.Query("USE testdb; INSERT INTO testtable VALUES (1), (2), (3);")
if err != nil {
fmt.Println(err)
return
}
ret, err := session.Query("SELECT * FROM testtable;")
if err != nil {
fmt.Println(err)
} else {
fmt.Println(ret)
}
}
Golang API docs