DBeaver XLSX 导出:第一次就导出文件,十万行量级照样稳定
【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver
DBeaver 是一款开源的通用数据库工具。这篇文章带你把查询结果存成 Excel 文件:从第一次导 XLSX 的操作顺序,到按团队习惯改参数,再到数据量上来之后怎么提速、出状况怎么对照处理。
第一次导出结果集:最短路径
开始前你只需要两样东西:一个能连通的数据库连接,和一条跑得通的查询。
- 在 SQL 编辑器里执行查询:窗口下方的结果区出现结果集,这就是导出对象。
- 右键结果集选"导出":向导打开,第一页列出所有可用的导出格式,界面由 plugins/org.jkiss.dbeaver.data.transfer.ui/ 提供。
- 格式列表里选 XLSX:这个格式由 plugins/org.jkiss.dbeaver.data.office/ 插件提供。列表里没有它,就先到"帮助 → 安装新软件"里装 Office 导出扩展,装完重新打开向导。
- 选定保存目录和文件名,点完成:文件在后台生成,底部状态区有进度条。
确认导出成功的方法:进度条走完后,用 Excel 打开目标文件——第一行是字段名、行数与结果集一致,才算没问题。文件在但打开是空的,基本可以断定查询本身没返回数据。
向导里值得记住的参数
向导的"设置"页参数不少,真正需要动的手不多,记下面几行就够了,对应实现见 DataExporterXLSX.java:
| 参数 | 默认值 | 什么时候需要改 |
|---|---|---|
| 标题格式 header | 标签 | 报表要求字段描述也进表头时,改成"两者都显示" |
| NULL 字符串 nullString | 空 | 审计或核对场景需要空值显示成可见占位文本 |
| Excel 日期格式 dateFormat | MM/dd/yy | 团队报表约定了别的日期样式 |
| 工作表最大行数 splitByRowCount | 1048575 | 想让大表提前拆成更小的工作表 |
| 行号 rownumber | 关 | 需要和库里原始行顺序逐行对账 |
| 导出 SQL exportSql | 关 | 要把来源 SQL 留在辅助工作表里备查 |
边框样式、字符串首尾空格修剪、布尔值文本这类项保持默认即可,日常导出用不到。
数据量和耗时上来后怎么调
结果集过了十万行,导出耗时和内存占用都会往上走。按代价从小到大,动这三处:
- 关掉数据预览页 → 导出过程内存里只留约 100 行缓冲,结果集再大内存曲线也基本走平。
- 取数批次改成 5000~10000 行 → 默认每批拉 10000 行,降到 5000 行后内存波动明显变小;还顶不住就继续降。
- 用"按列分组"(splitByColNum)指定一个列 → 大表按该列的值拆进多份工作表,每张单独打开都不卡,同时也躲开了单表行数上限。
出状况时对照这里
二进制列在单元格里显示 [BINARY]是默认保护,防止原始二进制直接写进单元格。想看到原始内容,在 SQL 里先把二进制转成文本(比如用 to_hex),再走导出。
很长的文本列在 Excel 里变短了单个 XLSX 单元格最多容纳 32767 个字符,超出的部分会被截断。导出前用 SQL 把这一列拆成几列,或者干脆换 CSV 格式导出。
进度条中途很久不走多半是查询本身慢、撞上了连接超时。给查询加 LIMIT 分批导,或把连接设置里的读取超时调大再跑。
一个文件里出现多张工作表,是不是坏了?没坏:行数摸到"工作表最大行数"阈值就自动开新表,属于内置拆分行为。觉得拆得太大或太小,改 splitByRowCount 的取值就行。
✅ 现在就打开 DBeaver,跑一条你最近用过的查询,右键结果集选"导出",把第一个 XLSX 文件弄出来。
【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考