这个页面包含了 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++ 可再发行组件。
使用示例:
import duckdbcursor = duckdb.connect()print(cursor.execute('SELECT 42').fetchall())
R 语言下安装 DuckDB
install.packages("duckdb")
注意:在某些 Linux ARM64(AArch64)系统上,您可能需要更改您的 R 环境的 Make 变量以确保成功编译。
使用示例:
library("DBI")con = dbConnect(duckdb::duckdb(), ":memory:")dbWriteTable(con, "iris", iris)dbGetQuery(con, 'SELECT "Species", MIN("Sepal.Width") FROM iris GROUP BY "Species"')
Java 语言安装
<dependency><groupId>org.duckdb</groupId><artifactId>duckdb_jdbc</artifactId><version>1.0.0</version></dependency>
直接下载安装:
https://repo1.maven.org/maven2/org/duckdb/duckdb_jdbc/1.0.0/duckdb_jdbc-1.0.0.jar
使用示例:
Class.forName("org.duckdb.DuckDBDriver");Connection conn = DriverManager.getConnection("jdbc:duckdb:");Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT 42");
Node.js 安装
npm install duckdb
使用示例:
var duckdb = require('duckdb');var db = new duckdb.Database(':memory:'); // or a file name for a persistent DBdb.all('SELECT 42 AS fortytwo', function(err, res) {if (err) {console.warn(err);return;}console.log(res[0].fortytwo)});
Rust 安装
cargo add duckdb --features bundled
使用示例:
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(())}
Golang 安装
go get github.com/marcboeker/go-duckdb
package mainimport ("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 intname string)row := db.QueryRow(`SELECT id, name FROM person`)_ = row.Scan(&id, &name)fmt.Println("id:", id, "name:", name)}
