DuckDB Installation
Version dev

Version

  • 0.9.2 (Latest Release)
  • GitHub main (Bleeding Edge)

Environment

  • Command Line
  • Python
  • R
  • Java
  • Node.js
  • Rust
  • Go
  • C/C++
  • ODBC

Package

  • Source
  • Binary

Platform

  • Windows
  • macOS
  • Linux

Usage Example

import duckdb
cursor = duckdb.connect()
print(cursor.execute('SELECT 42').fetchall())
pip install duckdb==0.9.2
install.packages("duckdb")
<dependency>
 <groupId>org.duckdb</groupId>
 <artifactId>duckdb_jdbc</artifactId>
 <version>0.9.2</version>
</dependency>

Direct link to JAR: duckdb_jdbc-0.9.2.jar
npm install duckdb
cargo add duckdb --features bundled
go get github.com/marcboeker/go-duckdb

(third-party library)
git clone https://github.com/duckdb/duckdb.git
cd duckdb
git checkout v0.9.2
make -j8
git clone https://github.com/duckdb/duckdb.git
cd duckdb
make -j8
pip install duckdb --pre --upgrade
install.packages('duckdb', repos=c('https://duckdb.r-universe.dev', 'https://cloud.r-project.org'))
Java dev builds are available in the sonatype snapshots repository, which can be accessed with the following:
<dependency>
	<groupId>org.duckdb</groupId>
	<artifactId>duckdb_jdbc</artifactId>
	<version>0.10.0-SNAPSHOT</version>
</dependency>

...

<repositories>
	<repository>
		<id>oss-sonatype</id>
		<name>oss-sonatype</name>
		<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
	</repository>
</repositories>
		
npm install duckdb@next
Not available
import duckdb
cursor = duckdb.connect()
print(cursor.execute('SELECT 42').fetchall())
library("DBI")
con = dbConnect(duckdb::duckdb(), ":memory:")
dbWriteTable(con, "iris", iris)
dbGetQuery(con, 'SELECT "Species", MIN("Sepal.Width") FROM iris GROUP BY "Species"')
Class.forName("org.duckdb.DuckDBDriver");
Connection conn = DriverManager.getConnection("jdbc:duckdb:");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT 42");
var duckdb = require('duckdb');
var db = new duckdb.Database(':memory:'); // or a file name for a persistent DB
db.all('SELECT 42 AS fortytwo', function(err, res) {
  if (err) {
    throw err;
  }
  console.log(res[0].fortytwo)
});
use duckdb::{Connection, Result};

#[derive(Debug)]
struct Person { id: i32, name: String, }

fn main() -> Result<()> {
    let conn = Connection::open_in_memory()?;

    conn.execute_batch(
        r"CREATE TABLE person (id BIGINT, name VARCHAR);
          INSERT INTO person VALUES (42, 'John');
        ")?;
    let mut stmt = conn.prepare("SELECT id, name FROM person")?;
    let person_iter = stmt.query_map([], |row| {
        Ok(Person {id: row.get(0)?, name: row.get(1)?})
    })?;

    for person in person_iter {
        println!("Found person {:?}", person.unwrap());
    }
    Ok(())
}
package main

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

func main() {
	db, _ := sql.Open("duckdb", "")

	db.Exec(`CREATE TABLE person (id INTEGER, name VARCHAR)`)
	db.Exec(`INSERT INTO person VALUES (42, 'John')`)

	var (
		id   int
		name string
	)
	row := db.QueryRow(`SELECT id, name FROM person`)
	_ = row.Scan(&id, &name)
	fmt.Println("id:", id, "name:", name)
}
DuckDB db(nullptr);
Connection con(db);
auto result = con.Query("SELECT 42");
result->Print();
./duckdb
Search Shortcut cmd + k | ctrl + k