DBeaver连DuckDB文件库的核心是路径准确且驱动匹配:路径填:memory:(内存库)或绝对路径(持久化),驱动须为duckdb_jdbc-*.jar且Driver Class为org.duckdb.DuckDBDriver,下载失败时需切换阿里云Maven镜像并重启软件。

DBeaver 连 DuckDB 文件库,核心就一条:路径必须填对,且驱动要装得准——否则“测试连接”永远卡在下载或报错。
选 DuckDB 连接类型时,别漏掉“Driver Settings”里的关键勾选
新建连接 → 选择 DuckDB → 点击“下一步”后,别急着填路径。先点右下角的 Edit Driver Settings,进入驱动配置页:
- 在
Libraries标签页里,确认已加载的 JAR 包是duckdb_jdbc-*.jar(比如duckdb_jdbc-1.2.0.jar),版本尽量和当前 DuckDB CLI 版本一致(可通过duckdb --version查) - 切到
Class标签页,Driver Class必须是org.duckdb.DuckDBDriver;如果下拉列表为空或显示错误类名,说明 JAR 没加载对或损坏 - 勾选
Use driver default port(DuckDB 无端口概念,此选项实际无效但不勾可能触发异常校验)
数据库路径填 :memory: 或文件路径,语义完全不同
路径不是随便写个名字就行,它直接决定数据存哪、是否持久化:
- 填
:memory::启动一个纯内存数据库,关掉 DBeaver 就丢数据,适合临时查 CSV/Parquet 或试 SQL 逻辑 - 填绝对路径如
C:datamydb.duckdb(Windows)或/home/user/db/mydb.duckdb(Linux/macOS):创建或打开对应文件,数据落盘,可复用 - 填相对路径(如
./test.db):DBeaver 启动目录决定最终位置,极易找不见文件,不推荐 - 路径含中文或空格?没问题,DuckDB 支持,但建议用英文+下划线命名,避免某些旧版 JDBC 驱动解析异常
测试连接失败,八成是驱动下载卡在 Maven 中央仓库
点击 Test Connection 后弹出下载框却一直不动,不是网络问题,而是默认源太慢或被拦截:
- 点
Download Configuration→ 进入Preferences > Connections > Drivers > Driver Locations - 删掉默认的
https://repo1.maven.org/maven2/,添加阿里云镜像:http://maven.aliyun.com/nexus/content/groups/public/ - 点
Download重试,通常 2–5 秒完成;若仍失败,手动下载duckdb_jdbc-x.x.x.jar(从https://repo1.maven.org/maven2/org/duckdb/duckdb_jdbc/找最新版),再通过Add File加载 - 下载成功后务必重启 DBeaver,否则新驱动不生效(这是最常被忽略的一步)
连上后查不了本地 CSV/Parquet?SQL 语法和路径写法要匹配 DuckDB 规则
连接成功只是开始,读外部文件得靠 DuckDB 自己的函数,不是 DBeaver 的功能:
- 读 CSV:用
read_csv_auto('path/to/file.csv'),不能写SELECT * FROM 'file.csv'(会报表不存在) - 读 Parquet:用
read_parquet('path/to/file.parquet'),通配符支持'folder/*.parquet',但单引号内路径不能用双斜杠或变量 - 路径是 Windows 风格?
C:datainput.csv要写成C:/data/input.csv或'C:\data\input.csv',否则反斜杠被当转义符处理 - 执行前先确认文件存在且 DBeaver 进程有读权限——尤其 macOS/Linux 下,别把文件放在
/tmp以外的 root-only 目录
真正容易卡住的地方,从来不是“怎么点下一步”,而是驱动版本和 DuckDB CLI 版本不一致、路径用了相对写法、或者连上后误以为能像 SQLite 那样直接拖文件进表——DuckDB 的外部文件读取全靠函数,没例外。










