概要
DuckDBと呼ばれる、リレーショナル(テーブル指向)DBMSをGolangから操作したいので、Golangから操作できるところまでの環境を構築します
環境構築
Goモジュールを初期化を以下のコマンドで実行します。実行後、「go.mod」,「go.sum」がフォルダ内に作られていることを確認します
go mod init モジュール名
go get でduckdbのクライアントをインストールします
go get github.com/marcboeker/go-duckdb
「main.go」ファイルを作り、以下のソースコードを入れてください
package main
import (
"database/sql"
"errors"
"fmt"
"log"
_ "github.com/marcboeker/go-duckdb"
)
func main() {
db, err := sql.Open("duckdb", "./duckdb.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
_, err = db.Exec(`CREATE TABLE people (id INTEGER, name VARCHAR)`)
if err != nil {
log.Fatal(err)
}
_, err = db.Exec(`INSERT INTO people VALUES (42, 'John')`)
if err != nil {
log.Fatal(err)
}
var (
id int
name string
)
row := db.QueryRow(`SELECT id, name FROM people`)
err = row.Scan(&id, &name)
if errors.Is(err, sql.ErrNoRows) {
log.Println("no rows")
} else if err != nil {
log.Fatal(err)
}
fmt.Printf("id: %d, name: %s\n", id, name)
}
ファイルの構成は以下のようになっています

以下のコマンドで実行します
go run main.go
実行すると以下の結果が出てきたら成功です

ちなみに、実行後「duckdb.db」が作成されますがこれはduckdbのデータベースファイルです。
GitHub - marcboeker/go-duckdb: go-duckdb provides a database/sql driver for the DuckDB database engine.
go-duckdb provides a database/sql driver for the DuckDB database engine. - marcboeker/go-duckdb

コメント