DBeaver 24.3.0+版本可直出.xlsx,自动按数据类型写入单元格,身份证号等长数字默认设为文本格式,打开即原样显示,彻底规避Excel科学计数法;低版本需CSV中转或安装OfficeIntegration插件。

直接导出为 .xlsx 文件(24.3.0+ 版本)是唯一能从源头规避 Excel 科学计数法的方案;其他所有 CSV 中转路径,本质都是在和 Excel 的自动类型推断机制博弈,注定要妥协或加额外步骤。
用 DBeaver 直出 .xlsx 而不是 CSV
Excel 自动把纯数字列识别为数值类型,一旦超过 15 位就必然丢精度、变科学计数法——这不是 DBeaver 的 bug,是 Excel 的设计行为。所以关键不是“怎么让 Excel 别乱猜”,而是“别让它有机会猜”。DBeaver 24.3.0 及以上版本内置 XLSX 导出器,会把每列按实际数据内容写入对应单元格类型(数值、日期、字符串),身份证号、订单号这类长数字会被自动设为文本格式,打开即原样显示。
- 确认版本:帮助 → 关于 DBeaver,检查是否 ≥
24.3.0(2026 年最新稳定版是25.0.2) - 右键结果集 → “导出数据” → 格式选
Excel (.xlsx)→ 下一步 → 指定路径完成 - 生成的文件双击打开,
18位身份证号、004417这类前导零字段不会被截断,也不会触发9.14404E+17这类显示 - 注意:低版本强行选
Excel (.xls)会失败或损坏文件,该格式早已弃用
导出 CSV 时强制字段为文本(全版本通用)
如果必须用 CSV(比如对接旧系统、脚本自动化),就不能依赖 Excel 导入向导的“智能识别”,而要在导出环节就让 DBeaver 把目标字段包进双引号,并用制表符分隔——这样 Excel 才会在导入时将其默认视为文本,跳过数值解析。
把记录数组导出为带样式的 Excel(xlsx) 或带 BOM 的 CSV。支持列配置(表头/宽度/顺序)、表头冻结首行、斑马纹、布尔值转「是/否」、数组换行、CSV 中文防乱码。零依赖。触发词:导出 Excel、导出 CSV、记录转表格、列配置导出、数据导出、表格美化、JSON 转表格。
- 导出格式选
CSV 文件→ 下一步 → 输出设置页勾选“使用文本限定符”,字符填" - 分隔符手动改成
(不是\t或文字“tab”,是真正按 Tab 键输入的字符) - 编码必须选
UTF-8 with BOM,否则中文字段在 Excel 里显示为乱码 - 导出后不要双击打开 CSV,而要用 Excel 的“数据 → 从文本/CSV”导入,在第二步明确勾选“制表符”,第三步对每一列点开下拉菜单,手动设为“文本”
SQL 层预处理:CAST 转字符串再导出
当字段本身是 BIGINT 或 DECIMAL,但业务上就是文本语义(如合同号、设备码),与其在导出后补救,不如在查询时就切断 Excel 的数值联想路径。用 CAST 强制转成字符串,是最轻量、最可控的干预点。
- MySQL 示例:
SELECT CAST(id_card AS CHAR) AS id_card, CAST(order_no AS CHAR) AS order_no FROM users - PostgreSQL 示例:
SELECT id_card::TEXT AS id_card, order_no::TEXT AS order_no FROM users - SQL Server 示例:
SELECT CAST(id_card AS VARCHAR(20)) AS id_card, CAST(order_no AS VARCHAR(30)) AS order_no FROM users - 注意:别用
CAST(x AS VARCHAR)不带长度,某些驱动会截断;建议按业务最大长度给足空间(如身份证固定 18 位,就写VARCHAR(18))
别信“Excel 设置单元格格式为文本”这种事后补救
这是最常被推荐也最无效的做法。Excel 对 CSV 的解析发生在“打开瞬间”,此时格式设置尚未生效;等你右键单元格去点“设置单元格格式 → 文本”,数据早已被 Excel 按数值逻辑读取并截断了——特别是超 15 位的数字,后几位已永久变成 0,改格式也救不回来。
- 双击打开 CSV → 数据已损坏 → 此时任何单元格格式修改都只是表面美化,原始值不可逆丢失
- 唯一有效的时机是“导入时”:走“数据 → 从文本/CSV”,并在导入向导第三步逐列指定类型
- 如果必须双击打开,唯一办法是在 CSV 每个数字字段前加单引号
',例如'123456789012345678,但 DBeaver 默认不支持自动加引号,得靠 SQL 层拼接:SELECT CONCAT("'", id_card) AS id_card FROM users
真正卡住人的从来不是导出按钮点哪,而是没意识到:Excel 对 CSV 的“自动识别”是一次性、不可逆的解析动作;所有想在它之后“改格式”的操作,都是在修一个已经塌掉的地基。

















