导出对象清单必须用DBeaver的「导出元数据」功能而非「导出数据」或手动查系统表;它通过元数据接口获取含类型、schema、注释、创建时间等完整信息,并支持HTML/Markdown/CSV/JSON/XML格式。

直接导出对象清单(表、视图、函数等)不能靠“导出数据”,得用 DBeaver 的元数据导出功能——它不走结果集,而是查系统表生成结构描述。
导出对象清单本质是查系统目录,不是导出查询结果
很多人在 SQL 编辑器里写 SELECT * FROM SYSIBM.SYSTABLES 再右键导出,这只能算“导出查询结果”,不是真正意义上的“对象清单”。真正的对象清单包含:对象类型(TABLE/VIEW/ALIAS/FUNCTION)、所属 schema、创建时间、注释、是否临时表等元信息,这些必须由 DBeaver 主动调用数据库的元数据接口获取。
关键区别:
- 查系统表再导出 → 得到的是你写的 SQL 返回的字段,字段名、顺序、过滤逻辑全由你控制,但缺约束、索引、权限等关联信息
- 用“生成 SQL → DDL”或“导出元数据” → DBeaver 自动拼装跨系统表的 JOIN 查询,补全 COMMENT、CHECK、GRANT 等上下文
右键数据库节点选「导出元数据」才是正路
这是最接近“对象清单”的原生路径,输出格式支持 HTML、Markdown、CSV、JSON、XML,适合归档或对接文档系统。
操作步骤:
- 在左侧导航树中,右键目标数据库或 schema 节点(不是某张表,也不是查询结果)
- 选择「导出元数据」(Export Metadata),不是「导出数据」(Export Data)
- 在向导第一页勾选要导出的对象类型:
Tables、Views、Stored Procedures、Functions、Sequences等 - 第二页选格式,推荐
HTML(带超链接跳转到列详情)或Markdown(适合放进 Git 仓库) - 注意取消勾选「Export data」——这里的数据指表内容,和对象清单无关
导出 CSV 对象清单时字段名容易错乱
选 CSV 格式看似简单,但默认导出的列顺序不稳定(比如 DB2 可能先出 tabname,PostgreSQL 出 table_name),且字段名不带 schema 前缀,多 schema 下会撞名。
解决办法:
- 导出前在向导「高级」页勾选「Include schema name」
- 手动在 CSV 配置里把
header设为true,确保首行是字段名 - 避免用 Excel 直接双击打开 CSV:中文字段名可能乱码,先用记事本另存为 UTF-8-BOM,再用 Excel 导入
- 如果需要固定字段顺序(如始终是
schema, name, type, comment),改用JSON或Markdown,它们结构更可控
想导出带列定义的宽表清单?得自己写查询 + 导出结果
「导出元数据」不展开列级细节(比如每列的类型长度、是否自增、默认值)。真要一张表列出所有表+所有列+所有约束,就得组合系统视图手动查。
以 DB2 为例,典型查询结构:
SELECT TABNAME AS table_name, COLNAME AS column_name, TYPENAME AS data_type, LENGTH, SCALE, NULLS, DEFAULT, REMARKS AS comment FROM SYSCAT.COLUMNS WHERE TABNAME IN (SELECT TABNAME FROM SYSCAT.TABLES WHERE TYPE = 'T') ORDER BY TABNAME, COLNO
执行后,在结果集右键「导出数据」→ 选 CSV 或 Excel XLSX 即可。注意:
- 别漏加
ORDER BY,否则列顺序打乱 - DB2 的
REMARKS是列注释,但某些旧版本为空,需确认是否已执行COMMENT ON COLUMN - 导出 Excel 时,
data_type列含括号(如VARCHAR(50)),Excel 可能误判为公式,建议导出时启用「Quote all values」选项
对象清单不是快照,而是对当前数据库状态的一次性提取;一旦表被重命名、字段被删,清单就过期——所以别把它当长期文档,而该作为同步前的校验基线。











