DBeaver默认不限制导出行数,但受内存、JVM堆大小、目标格式行数上限(如XLSX最多1,048,575数据行)及导出配置三重约束;未启用流式写入时会全量加载数据至内存,易触发OutOfMemoryError。

默认情况下,DBeaver 导出数据**不限制行数**,但实际导出过程会受内存、JVM 堆大小、目标格式(如 Excel 行数上限)和导出配置三重约束——不手动设限,就可能导出失败或卡死。
导出时触发“Out of Memory”或假死
这是最常见现象:选中一张百万级表点击导出,DBeaver 界面冻结,任务管理器里 Java 进程吃满内存,最终弹出 java.lang.OutOfMemoryError: Java heap space。根本原因不是 DBeaver 本身限制了数量,而是它默认把整张表加载进内存再写入文件。
- Excel(.xls)格式硬性限制 65536 行,超出会静默截断或报错
Invalid row number (65536) outside allowable range (0..65535) - Excel(.xlsx)理论支持 1048576 行,但 DBeaver 导出时若未启用流式写入(streaming),仍会全量缓存,极易 OOM
- CSV 虽无格式限制,但大文件写入过程中若 JVM 堆不足(默认约 1–2GB),同样崩溃
在导出向导中设置行数上限
DBeaver 提供了明确的“导出行数限制”入口,但它藏得比较深,且仅对当前导出任务生效:
- 右键表 →
导出数据→ 进入向导后,到 “输出设置” 步骤(非第一步) - 勾选
Limit rows count复选框 - 在右侧输入框填具体数值,比如
100000 - 注意:该选项只控制「从数据库读取多少行」,不影响后续写入逻辑;若导出目标是 Excel,仍需确保不超过其格式上限
全局配置导出行为与 JVM 内存
单次设置治标,长期使用建议调两处关键配置:
- 修改 DBeaver 启动参数,在
dbeaver.ini文件末尾追加:-Xmx4g(把最大堆内存提到 4GB,根据机器实际调整) - 关闭自动预览大结果集:进入
Preferences → Editors → Data Editor → Results,取消勾选Read all data at once—— 这能避免编辑器里点开表就加载全部数据,间接降低导出前的内存压力 - 导出格式优先选
CSV或JSON,它们天然支持流式处理;避免对超 10 万行数据直接导出为XLSX,除非确认已启用流式导出(社区版默认未开启)
真正容易被忽略的是:导出限制和查询结果集限制(Use SQL to limit fetch size)是两套独立机制。你在 SQL 编辑器里加了 LIMIT 1000,导出向导里没勾 Limit rows count,它仍会重新执行无 LIMIT 的 SELECT —— 因为导出走的是独立的数据获取路径。


















