DuckDB 速查表
DuckDB 是高性能嵌入式分析型数据库,专注 OLAP 工作负载。无需服务器配置,可直接在 CSV、Parquet、JSON 文件上执行 SQL,拥有丰富的扩展生态。
更新: 2026-07-20·46 条命令
快速开始
``bash
duckdb mydb.duckdb # 打开/创建数据库
duckdb -c "SELECT version()" # 单条查询
SELECT * FROM read_csv_auto('data.csv') # 直接查询 CSV
CREATE TABLE t AS SELECT * FROM read_parquet('f.parquet') # 导入 Parquet
SUMMARIZE SELECT * FROM t # 数据概览
``
安装配置(5)
| 命令 | 难度 | ||
|---|---|---|---|
brew install duckdb通过 Homebrew 安装 DuckDB | 基础 | brew install duckdb | |
pip install duckdb通过 pip 安装 DuckDB Python 包 | 基础 | pip install duckdb | |
curl -fsSL https://install.duckdb.org | sh通过脚本一键安装 DuckDB CLI | 基础 | curl -fsSL https://install.duckdb.org | sh | |
duckdb --version查看 DuckDB 版本 | 基础 | duckdb --version | |
duckdb --help显示 DuckDB 帮助 | 基础 | duckdb --help |
基本操作(7)
| 命令 | 难度 | ||
|---|---|---|---|
duckdb启动 DuckDB CLI(内存数据库) | 基础 | duckdb | |
duckdb mydb.db打开/创建持久化数据库文件 | 基础 | duckdb mydb.duckdb | |
duckdb -c "SELECT 1"执行单条 SQL 并退出 | 基础 | duckdb -c "SELECT current_database(), current_version();" | |
.tables列出当前数据库所有表 | 基础 | .tables | |
.schema TABLE查看表的建表语句 | 基础 | .schema employees | |
.databases列出所有已附加的数据库 | 基础 | .databases | |
.quit退出 DuckDB CLI | 基础 | .quit |
查询分析(8)
| 命令 | 难度 | ||
|---|---|---|---|
SELECT * FROM read_csv_auto('file.csv')自动推断模式读取 CSV 文件 | 基础 | SELECT * FROM read_csv_auto('data.csv') | |
SELECT * FROM read_csv_auto('*.csv')读取多个 CSV 文件(通配符) | 中级 | SELECT * FROM read_csv_auto('data/*.csv') | |
SELECT * FROM read_parquet('file.parquet')直接查询 Parquet 文件 | 基础 | SELECT * FROM read_parquet('sales.parquet') | |
SELECT * FROM read_parquet('*.parquet')查询多个 Parquet 文件 | 中级 | SELECT count(*) FROM read_parquet('partitions/*.parquet') | |
SUMMARIZE TABLE生成表的统计摘要(min, max, null, distinct 等) | 基础 | SUMMARIZE SELECT * FROM employees | |
EXPLAIN ANALYZE SQL分析查询执行计划和性能 | 中级 | EXPLAIN ANALYZE SELECT count(*) FROM orders WHERE amount > 100 | |
SELECT * FROM read_json_auto('file.json')自动推断模式读取 JSON 文件 | 基础 | SELECT * FROM read_json_auto('events.json') | |
SELECT * FROM delta_scan('path/to/delta/table')直接查询 Delta Lake 表 | 高级 | SELECT * FROM delta_scan('s3://bucket/delta-table/') |
表操作(8)
| 命令 | 难度 | ||
|---|---|---|---|
CREATE TABLE t AS SELECT * FROM read_csv_auto('f.csv')从 CSV 创建表 | 基础 | CREATE TABLE employees AS SELECT * FROM read_csv_auto('employees.csv') | |
CREATE TABLE t AS SELECT * FROM read_parquet('f.parquet')从 Parquet 创建表 | 基础 | CREATE TABLE sales AS SELECT * FROM read_parquet('sales.parquet') | |
INSERT INTO t SELECT * FROM read_csv_auto('f.csv')将 CSV 数据追加到已有表 | 中级 | INSERT INTO employees SELECT * FROM read_csv_auto('new_employees.csv') | |
.import FILE TABLE从文件导入数据到表 | 基础 | .import data.csv my_table | |
COPY t TO 'output.csv' (HEADER, DELIMITER ',')将表导出为 CSV 文件 | 中级 | COPY employees TO 'employees_export.csv' (HEADER, DELIMITER ',') | |
COPY t TO 'output.parquet'将表导出为 Parquet 文件 | 中级 | COPY orders TO 'orders.parquet' (FORMAT PARQUET) | |
DROP TABLE t删除表 | 基础 | DROP TABLE temp_data | |
DESCRIBE TABLE查看表的列信息 | 基础 | DESCRIBE employees |
格式导出(8)
| 命令 | 难度 | ||
|---|---|---|---|
duckdb -csv -c SQLCSV 格式输出查询结果 | 基础 | duckdb -csv -c "SELECT * FROM employees" | |
duckdb --json -c SQLJSON 格式输出查询结果 | 基础 | duckdb --json -c "SELECT * FROM employees" | |
duckdb -list -c SQL列表格式输出(无框线,适合管道处理) | 基础 | duckdb -list -c "SELECT name FROM employees" | |
duckdb -readonly mydb.db以只读模式打开数据库 | 中级 | duckdb -readonly production.db -c "SELECT count(*) FROM users" | |
.mode markdown设置输出格式为 Markdown 表格 | 中级 | .mode markdown | |
.mode box设置输出格式为盒式表格 | 中级 | .mode box | |
.maxrows N设置最大显示行数 | 基础 | .maxrows 50 | |
.separator SEP设置 CSV 分隔符 | 中级 | .separator '|' |
高级功能(10)
| 命令 | 难度 | ||
|---|---|---|---|
INSTALL EXTENSION安装 DuckDB 扩展 | 中级 | INSTALL httpfs; LOAD httpfs; | |
LOAD EXTENSION加载已安装的扩展 | 中级 | LOAD spatial; | |
SELECT * FROM read_csv_auto('s3://bucket/file.csv')从 S3 直接查询 CSV | 高级 | SELECT * FROM read_csv_auto('s3://my-bucket/data.csv') | |
ATTACH 'other.db' AS other附加另一个数据库文件 | 中级 | ATTACH 'archive.duckdb' AS archive | |
PRAGMA table_info('t')查看表的详细列信息 | 中级 | PRAGMA table_info('employees') | |
PRAGMA database_list列出所有附加的数据库 | 中级 | PRAGMA database_list | |
SELECT version()查看 DuckDB 版本信息 | 基础 | SELECT version() | |
SELECT * FROM duckdb_extensions()列出已安装和可用扩展 | 中级 | SELECT * FROM duckdb_extensions() | |
SELECT * FROM duckdb_tables()列出数据库中所有表的元数据 | 中级 | SELECT * FROM duckdb_tables() | |
SELECT * FROM duckdb_columns()列出数据库中所有列的元数据 | 中级 | SELECT * FROM duckdb_columns() |
常见问题
本速查表数据整理自各工具官方文档。最后更新: 2026-07-20。