DuckDB
DuckDB 是嵌入式分析型 SQL 数据库,可直接查询 CSV、JSON、Parquet 与本地数据库文件,适合单机数据分析、应用内 OLAP、数据转换和可复现研究,不需要单独维护数据库服务器。
适合做什么
DuckDB 适合在笔记本、脚本、数据管道或桌面应用中分析 CSV、JSON、Parquet、Arrow 与数据库文件。它能直接查询文件并嵌入 Python、R、Java、Node.js 等环境,适合交互式分析、ETL 和本地数据产品;需要持续在线、多租户写入和数据库级权限隔离时,应选择服务器型数据库。
当前稳定线与 LTS
1.5.5 是当前稳定补丁版,1.4.5 属于并行维护的 1.4 LTS 线。DuckDB 本体与扩展存在版本和平台匹配关系,项目升级不能只替换一个 CLI 文件,还要验证客户端包、数据库格式、扩展和查询结果。核心项目采用 MIT 许可证。
文件、扩展与不可信输入边界
DuckDB SQL 可以读取本地文件、访问远程对象、加载扩展并消耗大量 CPU、内存和磁盘,因此不可信 SQL 的风险接近执行脚本。扩展拥有宿主进程权限,社区扩展不是自动安全审计;面向外部用户时应使用进程或容器隔离、最小文件权限、网络限制、资源上限和扩展允许列表。
维护记录
本页于 2026-08-06 根据 DuckDB 1.5.5 发布日历、1.4 LTS 维护线、CLI 与客户端安装、文件访问、扩展签名和安全配置说明复核。
选择下载方式
下载前请核对资源版本和授权范围。本站不提供破解软件及未经授权的资料。
DuckDB 1.5.5 安装、查询 Parquet 与安全配置教程
下面使用独立测试目录创建数据库文件,导入一份可公开的 CSV,再查询 Parquet。先验证数据类型和输出结果,随后再接入真实数据,不直接运行来源不明的 SQL 或扩展。
安装前准备
- 根据使用方式选择 CLI、Python、R、JDBC 或其他客户端;同一项目固定 DuckDB 和扩展版本。
- 准备一份可重复生成的测试数据,确认磁盘有数据库文件、WAL 和临时计算空间。
- 涉及敏感文件时使用低权限账号,并明确 DuckDB 允许访问的目录、网络和扩展范围。
安装步骤
- 01
选择当前稳定版和架构
Windows、macOS 与 Linux 选择对应 CPU 架构的 1.5.5 CLI;项目依赖则在锁文件中固定相同主次版本。长期维护环境可评估 1.4.5 LTS,不混用不同版本扩展二进制。
- 02
验证程序与数据库位置
运行 `duckdb --version`,在测试目录执行 `duckdb analytics.duckdb`。不要把生产数据库放进会自动双向同步或多人同时改写的目录。
- 03
设置资源与外部访问边界
按机器容量设置 `memory_limit`、`threads` 和临时目录上限;处理不可信输入时使用 CLI safe mode、关闭外部访问或限定允许目录,并禁用不需要的社区扩展与自动加载。
快速上手
- 01
直接检查文件结构
先用 `DESCRIBE SELECT * FROM 'sample.csv';` 检查字段推断,再限制行数执行查询。日期、编码和大整数不要只依赖自动类型推断。
- 02
写入可复用数据库表
在事务中执行 `CREATE TABLE events AS SELECT * FROM 'sample.csv';`,随后用计数、空值和唯一键检查验证导入结果,并执行 `CHECKPOINT`。
- 03
查询列式文件并导出
对 Parquet 使用投影和过滤,只读取需要的列;确认结果后再用 `COPY (...) TO 'result.parquet' (FORMAT PARQUET);` 导出到受控目录。
使用建议
- DuckDB 优势是本地列式分析与向量化执行,不应因为安装简单就替代需要账户权限、审计和高并发事务的服务器数据库。
- SQL 可以读取文件、访问网络和加载扩展,应像脚本代码一样对待;参数值使用预编译语句,不执行用户提交的完整 SQL。
- 社区扩展由第三方开发,即使由项目基础设施构建和签名也不等于经过完整代码审查;生产环境应使用允许列表。
故障排查与卸载方法
数据库文件被锁定或无法写入怎么办?
确认没有另一个独立进程正在写同一文件,检查目录权限和只读挂载。先安全结束旧进程并备份文件,不要强行删除仍在使用的 WAL 或锁相关文件。
查询大文件时内存或临时磁盘耗尽怎么办?
增加过滤与列投影,分批处理输入,并设置合理的内存、线程和临时目录上限。检查连接、排序和聚合是否造成大规模中间结果。
- 导出并验证需要保留的数据将关键表导出为 Parquet 或受支持格式,重新读取并核对行数、校验值和字段类型;数据库文件与导出文件至少保留一份离线备份。
- 移除客户端与扩展缓存删除 CLI 或语言包前关闭所有连接,按需清理扩展目录和临时文件;不要误删仍由其他项目使用的共享环境与数据库文件。
常见问题
DuckDB 需要先启动数据库服务吗?
不需要。DuckDB 通常作为命令行程序或应用内库运行,数据库可以保存在单个文件中,也可以使用内存数据库。它不是 MySQL、PostgreSQL 那种长期监听端口的独立服务。
DuckDB 适合多人同时写同一个数据库文件吗?
它适合单进程内并发分析,不适合多个独立进程频繁同时写同一文件。多用户在线事务、细粒度权限和高并发写入应使用服务器型数据库,再把分析数据交给 DuckDB。
1.5.5 和 1.4.5 LTS 应该选哪个?
1.5.5 是当前稳定线,适合需要新功能的常规使用;1.4.5 属于 1.4 LTS 线,适合更看重较长维护窗口和扩展兼容性的环境。升级前要同时核对客户端库与扩展版本。
下载时需要提取码吗?
夸克网盘无需提取码;百度网盘所需的四位提取码会直接显示在下载入口旁。
