DBeaver 怎样把查询结果导出为 CSV
来源:17golang原创
时间:2026-11-03 06:42:19 240浏览 收藏
在 DBeaver 里把查询结果导出为 CSV,直接在结果网格上右键选择 Export data,在向导中选择 CSV,再确认列、编码、分隔符和输出文件即可。若只是导出当前已经查出来的结果,优先从结果网格进入,不要重新从连接树选择整张表。
官方地址:https://dbeaver.com/
官方文档把查询结果、Data Editor 和连接树都归入 Data export,但三种入口读取数据的方式并不完全相同。下面这套路径只针对“查询已经执行完成,现在要保存结果”的场景。
从查询结果网格打开导出入口
先在 SQL Editor 中执行查询,确认结果网格已经显示。把鼠标放到结果表格内,右键选择 Export data,即可打开数据传输向导。不要在编辑器空白处右键,否则菜单可能不会出现结果集相关选项。
- 打开已经执行出结果的 SQL Editor。
- 在结果网格内右键,选择 Export data。
- 在导出格式页面选择 CSV,点击 Next。

如果你是在连接树里的表上右键选择 Export Data,DBeaver 会按表对象读取数据;如果从 SQL 脚本使用 Execute → Export from Query,则会按脚本重新读取。当前文章的目标是结果网格,因此选择结果网格上的入口更容易保持筛选后的列和行范围。
选择 CSV 并确认要导出的列
进入 CSV 向导后先看列范围。默认可以导出全部列,也可以展开 Columns,只勾选需要交付的字段。列选择应该在这里完成,而不是导出后再用表格软件删除,因为少导出无关字段能降低文件体积,也能减少敏感列被带走的机会。
| 需求 | 向导里的处理 | 结果 |
|---|---|---|
| 保留当前查询筛选 | 从查询结果网格打开 Export data | 以当前结果集为导出对象 |
| 只交付部分字段 | 打开 Columns,取消不需要的列 | CSV 不包含被取消的字段 |
| 只交付已选行 | 使用结果网格入口并启用 Selected rows only | 只输出当前选中的行 |
“Selected rows only”和“Selected columns only”适用于查询结果或 Data Editor 的导出。如果导出入口来自连接树或 SQL 脚本,数据会直接从数据库读取,不能把结果网格里的选中状态当成同一件事。
设置读取方式与 CSV 格式
下一页通常同时包含数据提取和 CSV 格式设置。小结果集可以沿用已经抓取的行;数据量较大时,则要注意是否重新查询、是否提前统计行数以及抓取批次大小。
- 在读取选项中,当前结果集可优先考虑 Use fetched rows,避免为了同一批数据再次查询。
- 需要继续操作数据库时,可考虑 Open new connection(s),让导出读取使用独立连接。
- 结果很多但不需要进度总数时,谨慎启用 Select row count,因为预先统计行数会增加一次查询成本。
- 在 CSV 设置中确认 Encoding、Delimiter、Header、NULL string 与引号策略。

例如,给其他系统消费的文件通常要固定 UTF-8、逗号分隔并保留首行表头;如果字段内容本身可能带逗号或换行,应保留引号转义策略。DBeaver 的 CSV 参数还包括 Header case、Header format、Quote character 和 Row delimiter,可按接收方的约定调整。
-- 先把要交付的字段写进查询,减少导出后再清理的工作
SELECT
id, -- 业务主键,便于接收方定位记录
customer_name, -- 只导出交付所需的客户名称
created_at -- 保留创建时间,方便后续排序或增量处理
FROM orders
WHERE created_at >= '2026-11-01'; -- 用明确条件限定本次导出范围
这个查询只是准备结果集的示例,不代表 DBeaver 会替你验证业务条件。导出前先在结果网格里确认列名、行数范围和日期条件,再进入向导。
指定文件位置并完成导出
在输出文件页选择保存位置和文件名。完成前回看三个点:对象是不是当前查询结果、格式是不是 CSV、输出路径是不是团队约定的位置。确认后点击 Finish;如果页面显示 Proceed,先继续到最后一页,再点击 Finish。
如果这套导出需要反复执行,可以使用向导中的 Save 保存为数据传输任务。任务适合固定查询、固定列和固定输出规则的场景;临时导出则不必为了偶尔使用额外维护任务配置。
按现象处理导出异常
打开 CSV 后中文乱码
先回到 CSV 格式设置,明确选择 UTF-8,并确认打开文件的工具也按 UTF-8 读取。不要先改数据库字符集;单次文件乱码往往只是导出编码和查看工具的编码解释不一致。
CSV 少了列或多了列
重新打开结果网格的 Export data,检查 Columns 是否只保留了部分字段,再检查查询本身是否使用了显式列清单。使用 SELECT * 时,表结构变化也可能让导出列数跟着变化。
NULL 变成空字符串后无法区分
在 CSV 设置里为 NULL string 指定接收方认可的占位符,并在交付说明中写清楚它代表数据库 NULL。不要把空字符串、字符串“NULL”和真正的 NULL 混为一谈。
大结果集导出很慢
先确认是否误启用了 Select row count,再判断是否能使用已经抓取的行;必要时调整 Fetch size。若导出期间还要继续使用数据库,可考虑打开新连接。不要只把 Maximum threads 调大:该选项主要在多表导出时发挥作用,并且线程数增加也会增加数据库和客户端压力。
一套不容易出错的操作顺序
- 在结果网格内右键选择 Export data,而不是从空白编辑区寻找菜单。
- 选择 CSV,并在 Columns 中确认字段范围。
- 根据结果大小选择 Use fetched rows、独立连接和 Fetch size。
- 固定 UTF-8、分隔符、表头和 NULL 表示。
- 在 Finish 前回看结果对象、格式和文件位置;需要重复执行时再 Save 为任务。
记住一个判断方法:导出内容不对,先回到“对象和列”;文件打开不对,先回到“编码和 CSV 格式”;导出过程太慢,先回到“读取方式和行数统计”。这样比导出完成后再盲目修改文件更快定位。
相关问题
- DBeaver 可以只导出查询结果中选中的行吗? 可以,从结果网格进入导出向导后使用 Selected rows only;连接树导出整张表时不要把网格选中状态混用。
- 为什么导出 CSV 前还要设置 Header? Header 决定列名是否写入文件以及写在顶部还是底部,接收方需要按约定解析。
- 查询结果导出和数据库迁移一样吗? 不一样。查询结果导出是生成文件,数据库迁移是把数据传到另一套数据库或存储目标。
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
271 收藏
-
206 收藏
-
316 收藏
-
484 收藏
-
278 收藏
-
479 收藏
-
194 收藏
-
397 收藏
-
328 收藏
-
130 收藏
-
265 收藏
-
201 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习