这个页面包含了 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 duckdb
cursor = 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 DB
db.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 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)
}