DBeaver导出当前查询结果的正确入口是结果面板底部「导出数据」按钮(↑文件+箭头),非右键菜单;CSV导出需设制表符分隔、启用文本限定符并用Excel“从文本/CSV”导入;XLSX不保留样式但识别单元格类型;超大结果需启用流式导出;务必先加载全部结果再导出。

直接按查询结果导出,而不是整张表,是 DBeaver 最常用也最容易误操作的场景——关键不在“能不能”,而在「导出入口选错」和「导出格式配错」。
导出按钮藏在查询结果面板底部
执行 SELECT 查询后,结果集出来,很多人下意识右键表名或结果网格空白处,结果弹出的是「导出表」或「导出结果集(带格式)」,这两者行为完全不同。真正对应「当前查询结果」的导出入口,固定在结果面板最下方工具栏里:一个图标为「↑ 文件 + 箭头」的按钮,文字标注为「导出数据」。
- 这个按钮只对当前 SQL 执行后的结果集生效,哪怕你写了
SELECT * FROM users LIMIT 10,它也只导出这 10 行 - 如果没看到该按钮,请确认是否已成功执行查询(状态栏显示「X 行已获取」),且结果标签页处于激活状态
- 右键结果网格 → 「导出结果集」是旧版路径,容易触发带格式复制逻辑,不推荐用于结构化导出
CSV 导出时数字变科学计数法?改分隔符和文本限定符
导出 CSV 后在 Excel 里看到 1.16E+18 这类显示,不是数据丢了,是 Excel 自动识别数值类型并格式化了。DBeaver 本身导出的是纯文本,问题出在 Excel 的导入逻辑。
- 在导出向导的「输出设置」页,把「字段分隔符」从默认的
,改成\t(制表符) - 勾选「使用文本限定符」,限定符设为
"(英文双引号) - 编码务必选
UTF-8;若目标环境是旧版 Windows 中文系统,可临时切为GBK,但会牺牲通用性 - 导出后,不要直接双击打开 CSV,而应在 Excel 中通过「数据 → 从文本/CSV」导入,并手动指定分隔符为「制表符」
XLSX 导出不保留列宽和样式,但能写对单元格类型
DBeaver 的 XLSX 导出本质是用 Apache POI 写入原生 Excel 单元格类型,所以数值列、日期列、布尔列会被正确标记为对应类型,Excel 打开后可直接参与计算或筛选——但它不会继承你在 DBeaver 里调过的列宽、字体或颜色。
- 适合场景:给业务方发报表、需要做后续公式处理、导出量在 5 万行以内
- 超大结果集(如 >10 万行)建议改用流式导出(导出向导中勾选「启用流式导出」),否则可能 OOM 或卡死
- 如果结果里有
NULL值,默认导出为空白单元格;如需显示为N/A或NULL字符串,得在「格式」页设置空值显示文本 - 注意:XLSX 不支持导出 BLOB/CLOB 类型字段(如图片、长文本),遇到会跳过或报错
想复用导出配置?保存为命名模板
每次导出都调参数太累?DBeaver 允许把当前导出配置(格式、编码、分隔符、空值处理等)保存为命名模板,下次在「导出向导」首页就能直接选择。
- 完成一次配置后,在导出向导最后一页不点「完成」,先点「保存配置」,输入名字如
excel_for_business - 下次导出时,在第一步「选择导出目标」下拉框里就能看到该模板,选中即自动加载全部参数
- 模板保存在本地配置目录,不随连接共享;多台机器需手动同步
export-templates.json文件 - 模板不记录 SQL 本身,只记录导出行为参数——所以仍需先执行查询,再套模板
最常被忽略的一点:导出前没确认结果集是否已完整加载。DBeaver 默认只拉取前 200 行预览,如果你没滚动到底部或点击「加载全部」,导出的只是这 200 行,而非真实全量结果。











