用 DBeaver 自动生成数据字典:从单表导出到批量文档的完整指南
【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver
你刚接手一个三个月没人动过的老库,同事丢给你一句"数据字典在文档里,自己看"。打开文档文件夹发现,里面列的字段比数据库里实际的表少了小一半——库一直在变,字典一直没人管。这种情况下与其对着旧文档猜,不如直接让数据库自己开口。DBeaver 的流式数据导出可以把结构查询的结果导出为 Markdown、HTML、JSON、CSV、XML 等格式,从单表到整库都能走同一条路径,后面会按"上手—交付—同步"三个场景拆开讲。
上手老库:先导出单表结构
选一个和落点匹配的格式
DBeaver 把每种导出格式实现为独立的 exporter,集中在数据导出插件里:Markdown、HTML、JSON、CSV、XML、SQL、TXT、DbUnit 等各有对应类,入口在 数据导出模块,界面层在 导出 UI 插件。你什么时候用:在导航树里选中一个表或查询结果,走导出流程时,消费端列表里直接选目标格式。关键判断就一条——文档给谁看,就选谁的母语。
| 格式 | 典型落点 |
|---|---|
| Markdown | README、内部 wiki、版本库 |
| HTML | 发给客户的交付文档、在线展示 |
| JSON | 喂给 API 文档工具或脚本二次加工 |
| CSV | 丢进 Excel 做核对 |
| XML | 系统集成、配置管理 |
调一调 Markdown 表格的选项
Markdown 导出器对表格细节有专门控制,源码见 DataExporterMarkdownTable.java。你能调的包括:空值显示文本(nullString)、数字是否格式化(formatNumbers)、是否输出表头分隔行(showHeaderSeparator)、Confluence 兼容格式(confluenceFormat)、单元格内容转义(escapeCellContent)。另外两件事它自动做:单元格里的竖线会转义成|,换行会被替换成<br>,所以注释里带换行也不会把表格撑破。产出大致长这样:
| username | email | is_nullable | | -------- | ----- | ----------- | | alice | alice@example.com | NO |📦 交付前批量出文档
把整库结构拼成一张宽表再导出
单表导出解决"新人看一张表"的问题,交付场景要的是全库视图。做法很朴素:写一条拼目录视图的查询,把列名、类型、可空性、默认值、注释一次取出来,再把查询结果按 Markdown 或 HTML 导出。不同数据库的目录视图名字不同(MySQL 用information_schema,PostgreSQL 也提供同名视图),下面这条按 PostgreSQL 写法,你换成自己库的对应视图即可:
SELECT column_name, data_type, is_nullable, column_default FROM information_schema.columns WHERE table_schema = 'public' ORDER BY table_name, ordinal_position;同一思路可以复制成几条查询:一条出列、一条出索引、一条出外键,分别导出后拼进同一份 Markdown,就是一份结构完整的数据字典。
按接收方选格式
交付文档的读者不固定,格式跟着接收方走:
| 接收方 | 建议格式 | 原因 |
|---|---|---|
| 开发团队 | Markdown | 能进版本库,diff 友好 |
| 客户 | HTML | 样式稳定,可直接打开 |
| 自动化流程 | JSON | 结构化,方便解析 |
| DBA 核对 | CSV | 进 Excel 逐行比对 |
日常变更同步
把导出过程写成可复用脚本
数据字典要跟着 schema 走,前提是导出过程本身可重复。DBeaver 的导出核心是DataTransferJob这条任务管道,producer(查询或对象)接 consumer(格式 exporter),中间还能挂 processor 做转换。想脱离界面批量跑,可以关注 无界面模块,它提供不依赖 UI 启动平台的路径,适合把"连库—执行结构查询—导出文件"封装成你自己的脚本,再按环境配置不同的连接参数。
在 CI 里挂每日文档任务
脚本就位后,交给流水线是最省心的同步方式:定时触发,跑一遍导出,把产物提交回文档目录。骨架长这样,具体连接参数放在 CI 的 secret 里:
on: schedule: - cron: "0 2 * * *" jobs: generate: runs-on: ubuntu-latest steps: - run: ./scripts/export-dictionary.sh凌晨两点跑完,第二天早上打开仓库就是最新的字典,谁改了表结构、注释跟没跟上,git 记录里一目了然。
接下来可以做的事
- 挑一张你负责的表,跑一次结构查询,用 Markdown 格式导出,确认转义和空值显示符合预期。
- 按"列 / 索引 / 外键"拆三条目录查询,导出后拼成一份整库字典,存进项目的 docs 目录。
- 把连库和导出封装成一个脚本,参数化连接信息,先在自己机器上手动跑通。
- 把脚本挂进流水线的定时任务,观察一周,看文档变更和实际 DDL 变更是否能对上。
【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考