Spec-Zone.ru › DuckDB

Go

Драйвер DuckDB для Go, go-duckdb, позволяет использовать DuckDB через интерфейс database/sql. Примеры использования этого интерфейса см. в официальной документации и туториале.

Клиент Go — это библиотека сторонних разработчиков, и её репозиторий размещён по адресу https://github.com/marcboeker/go-duckdb.

Установка

Для установки клиента go-duckdb, выполните:

go get github.com/marcboeker/go-duckdb

Импортирование

Для импорта пакета DuckDB Go добавьте следующие записи в свои импорты:

import (
	"database/sql"
	_ "github.com/marcboeker/go-duckdb"
)

Appender

Клиент DuckDB Go поддерживает API DuckDB Appender для массовых вставок. Новый Appender можно получить, передав соединение DuckDB в NewAppenderFromConn(). Например:

connector, err := duckdb.NewConnector("test.db", nil)
if err != nil {
  ...
}
conn, err := connector.Connect(context.Background())
if err != nil {
  ...
}
defer conn.Close()

// Retrieve appender from connection (note that you have to create the table 'test' beforehand).
appender, err := NewAppenderFromConn(conn, "", "test")
if err != nil {
  ...
}
defer appender.Close()

err = appender.AppendRow(...)
if err != nil {
  ...
}

// Optional, if you want to access the appended rows immediately.
err = appender.Flush()
if err != nil {
  ...
}

Примеры

Простой пример

Пример использования API Go выглядит следующим образом:

package main

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

	_ "github.com/marcboeker/go-duckdb"
)

func main() {
	db, err := sql.Open("duckdb", "")
	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)
}

Другие примеры

Дополнительные примеры см. в примерах в репозитории duckdb-go.

© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/api/go.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API