这个页面包含了 DuckDB 的安装选项。我们推荐使用稳定版本 1.0.0。

二进制文件适用于主要的编程语言和平台。如果找不到预先打包好的二进制文件,考虑从源代码构建 DuckDB。

命令行安装

windows 命令行安装

直接下载安装

x86_64

https://github.com/duckdb/duckdb/releases/download/v1.0.0/duckdb_cli-windows-amd64.zip

使用示例:

./duckdb

通过包管理器安装

winget install DuckDB.cli

注意:DuckDB 客户端的安装不依赖于任何其他 DuckDB 客户端。 例如,Python 库可以使用与命令行界面(CLI)客户端不同的版本。 因此,它们需要单独更新。

macOS 命令行安装

brew install duckdb

注意:DuckDB 客户端的安装不依赖于任何其他 DuckDB 客户端。 例如,Python 库可以使用与命令行界面(CLI)客户端不同的版本。 因此,它们需要单独更新。

Linux 命令行安装

DuckDB 当前无法通过 apt/yum 获得。

请使用以下二进制文件之一: https://github.com/duckdb/duckdb/releases/download/v1.0.0/duckdb_cli-linux-amd64.zip https://github.com/duckdb/duckdb/releases/download/v1.0.0/duckdb_cli-linux-aarch64.zip

Python 环境下安装

pip install duckdb --upgrade

请注意:在 Windows 系统上,DuckDB Python 包需要 Microsoft Visual C++ 可再发行组件。

使用示例:

  1. import duckdb
  2. cursor = duckdb.connect()
  3. print(cursor.execute('SELECT 42').fetchall())

R 语言下安装 DuckDB

install.packages("duckdb")

注意:在某些 Linux ARM64(AArch64)系统上,您可能需要更改您的 R 环境的 Make 变量以确保成功编译。

使用示例:

  1. library("DBI")
  2. con = dbConnect(duckdb::duckdb(), ":memory:")
  3. dbWriteTable(con, "iris", iris)
  4. dbGetQuery(con, 'SELECT "Species", MIN("Sepal.Width") FROM iris GROUP BY "Species"')

Java 语言安装

  1. <dependency>
  2. <groupId>org.duckdb</groupId>
  3. <artifactId>duckdb_jdbc</artifactId>
  4. <version>1.0.0</version>
  5. </dependency>

直接下载安装

https://repo1.maven.org/maven2/org/duckdb/duckdb_jdbc/1.0.0/duckdb_jdbc-1.0.0.jar

使用示例

  1. Class.forName("org.duckdb.DuckDBDriver");
  2. Connection conn = DriverManager.getConnection("jdbc:duckdb:");
  3. Statement stmt = conn.createStatement();
  4. ResultSet rs = stmt.executeQuery("SELECT 42");

Node.js 安装

npm install duckdb

使用示例:

  1. var duckdb = require('duckdb');
  2. var db = new duckdb.Database(':memory:'); // or a file name for a persistent DB
  3. db.all('SELECT 42 AS fortytwo', function(err, res) {
  4. if (err) {
  5. console.warn(err);
  6. return;
  7. }
  8. console.log(res[0].fortytwo)
  9. });

Rust 安装

cargo add duckdb --features bundled

使用示例:

  1. use duckdb::{Connection, Result};
  2. #[derive(Debug)]
  3. struct Person { id: i32, name: String, }
  4. fn main() -> Result<()> {
  5. let conn = Connection::open_in_memory()?;
  6. conn.execute_batch(
  7. r"CREATE TABLE person (id BIGINT, name VARCHAR);
  8. INSERT INTO person VALUES (42, 'John');
  9. ")?;
  10. let mut stmt = conn.prepare("SELECT id, name FROM person")?;
  11. let person_iter = stmt.query_map([], |row| {
  12. Ok(Person {id: row.get(0)?, name: row.get(1)?})
  13. })?;
  14. for person in person_iter {
  15. println!("Found person {:?}", person.unwrap());
  16. }
  17. Ok(())
  18. }

Golang 安装

go get github.com/marcboeker/go-duckdb

  1. package main
  2. import (
  3. "database/sql"
  4. "fmt"
  5. _ "github.com/marcboeker/go-duckdb"
  6. )
  7. func main() {
  8. db, _ := sql.Open("duckdb", "")
  9. db.Exec(`CREATE TABLE person (id INTEGER, name VARCHAR)`)
  10. db.Exec(`INSERT INTO person VALUES (42, 'John')`)
  11. var (
  12. id int
  13. name string
  14. )
  15. row := db.QueryRow(`SELECT id, name FROM person`)
  16. _ = row.Scan(&id, &name)
  17. fmt.Println("id:", id, "name:", name)
  18. }