Go-Client
Installation Um den DuckDB-Go-Client zu verwenden, besuchen Sie die Go-Installationsseite.
Die aktuellste stabile Version des DuckDB-Go-Clients ist 1.5.5.
Der DuckDB-Go-Client duckdb-go ermöglicht die Nutzung von DuckDB über die Schnittstelle database/sql.
Beispiele zur Verwendung dieser Schnittstelle finden Sie in der offiziellen Dokumentation und im Tutorial.
Installation
Um den duckdb-go-Client zu installieren, führen Sie aus:
go get github.com/duckdb/duckdb-go/v2Import
Um das DuckDB-Go-Paket zu importieren, fügen Sie die folgenden Einträge zu Ihren Imports hinzu:
import ( "database/sql" _ "github.com/duckdb/duckdb-go/v2")Appender
Der DuckDB-Go-Client unterstützt die DuckDB-Appender-API für Masseneinfügungen. Sie erhalten einen neuen Appender, indem Sie eine DuckDB-Verbindung an NewAppenderFromConn() übergeben. Zum Beispiel:
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 { ...}Beispiele
Einfaches Beispiel
Ein Beispiel für die Verwendung der Go-API:
package main
import ( "database/sql" "errors" "fmt" "log"
_ "github.com/duckdb/duckdb-go/v2")
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)}Weitere Beispiele
Weitere Beispiele finden Sie in den Beispielen im duckdb-go-Repository.
Danksagung
Wir danken Marc Boeker für die ursprüngliche Implementierung des DuckDB-Go-Clients.