DBeaver 21.0.0起原生支持“Copy as JSON”,旧版本无此功能;需确保版本≥21.0.0、驱动更新且元数据完整,右键结果集选择“Copy as → JSON”并勾选“Include column names as keys”等选项控制格式。

结果集右键菜单里没有“Copy as JSON”?先确认版本和驱动
DBeaver 21.0.0 之后才原生支持 Copy as JSON,旧版本(如 7.x、20.x)即使界面看起来一样,也可能缺失该选项。不是你操作错了,是功能压根没集成进去。
另外,部分数据库驱动(比如老版 PostgreSQL JDBC 驱动或某些 Oracle thin driver)在元数据获取不全时,DBeaver 会禁用 JSON 复制功能——它需要知道每列的类型才能正确序列化 null、timestamp、boolean 等值。
- 检查 DBeaver 版本:
Help → About DBeaver,确保 ≥ 21.0.0 - 更新驱动:
Connection Settings → Driver Settings → Download/Update - 执行查询后,右键结果集空白处,看是否有
Copy as → JSON(不是“JSON Array”或“JSON Object”)
复制出来的 JSON 是扁平数组还是带字段名的对象?取决于勾选选项
DBeaver 默认复制为 JSON 数组(每行一个对象),但字段名是否保留、null 是否省略、时间格式怎么处理,全由弹出的对话框控制。
右键 → Copy as → JSON 后会弹出配置窗口,关键选项有:
-
Include column names as keys:必须勾选,否则只复制值(变成纯数组[["a",1],["b",2]]) -
Omit null values:不勾则输出"col": null;勾选则整个字段键值对被跳过 -
Format timestamps as ISO 8601:建议勾选,避免时间变成毫秒数字或数据库原生字符串(如2024-05-20 14:23:01.123) -
Quote numbers as strings:一般不勾,除非后端 API 要求所有字段都是字符串类型
复制大结果集时 JSON 格式错乱或卡死?关掉“Pretty print”再试
当结果超过几千行,勾选 Pretty print (formatted) 会导致 DBeaver 在内存中生成带缩进的 JSON 字符串,极易触发 GC 暂停甚至 OOM。现象是复制后粘贴出来缺括号、换行错位、或者根本没响应。
实操建议:
- 大数据量(> 500 行)一律取消勾选
Pretty print,用紧凑格式(minified) - 如果必须格式化,先复制成紧凑 JSON,再用 VS Code / jq / 在线工具美化
- 导出超大结果推荐走
Export Resultset → JSON File,它走流式写入,不占 UI 线程内存
为什么复制的 JSON 里数字变科学计数法或丢失精度?跟数据库字段类型强相关
DBeaver 本身不改数值内容,但某些 JDBC 驱动(尤其是 MySQL Connector/J 8.0.22 之前、SQL Server 的 mssql-jdbc 早期版)会把 DECIMAL 或高精度 NUMERIC 自动转成 double,导致 1234567890123456789.123 变成 1.2345678901234567e18。
解决路径很直接:
- MySQL:在连接 URL 加参数
?useServerPrepStmts=false&rewriteBatchedStatements=true&tinyInt1isBit=false,重点是关掉tinyInt1isBit防 boolean 干扰 - PostgreSQL:驱动设置里勾选
Use native decimal(Driver Properties →useDecimal=true) - 通用兜底:把数值字段显式转字符串,例如
SELECT id::text, amount::text FROM orders
这个精度问题不会报错,只会静默失真,查 JSON 时得盯着数字末尾有没有 e+ 或小数位莫名截断。











