Go言語で始めるDuckDB

対あり技術部(技術系)

概要

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

コメント

タイトルとURLをコピーしました