DBeaver 数据字典生成与文档自动化指南
【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver
周五下午,甲方催要数据库文档,两百多张表躺在库里,谁也不会一行行手抄。这时候 DBeaver 数据字典能力最省事:结构直接从元数据里导出来,改完表结构重跑一遍就是最新版。下面是这套流程的实战笔记。
一分钟跑通:从连库到 Markdown 文件的最短路径
先让读者拿到结果。最短路径四步:
- Database Navigator 里右键连接节点(或具体的表节点),选「导出数据」;
- 格式下拉里选 Markdown,确认输出目录;
- 在对象选择步骤勾选要导出的表,下一步;
- 点完成,目标目录里会落出一个
.md文件。
五种格式的导出器实现都在 plugins/org.jkiss.dbeaver.data.transfer/ 插件里,MarkdownTable、HTML、JSON、CSV、XML各有对应类,想改输出行为可以直接从这里入手。
导出格式怎么选:一张决策表定格式
| 你的目的 | 选它 | 说明 |
|---|---|---|
| 文档进仓库、给同事查 | Markdown | 进版本控制,diff 干净,wiki 直接渲染 |
| 交付客户或内部知识库 | HTML | 自带样式,浏览器打开即可读 |
| 程序消费、二次加工 | JSON | 结构化,脚本好解析 |
| 运营/分析同学自己统计 | CSV | Excel 直接打开,零成本 |
| 系统间交换、老集成 | XML | 标签化,老系统吃得下 |
原则很简单:人读选 Markdown/HTML,机器读选 JSON/CSV/XML。拿不准就先 Markdown,改库结构后重导一次,git diff 就是字段级变更日志。
从单表到整库:三种导出粒度怎么配
- 单表:右键表节点走同一个「导出数据」,产物只含这张表的字段、类型、约束、默认值和注释。
- 库级:右键连接节点,对象选择步骤选整库,勾选「包含视图和同义词」,表、视图、索引、外键一次出全。
- 过程对象:存储过程不在数据导出范围,对过程节点选「导出 DDL」,拿到 CREATE 语句再和前面拼进同一份文档。
CLI 下三种粒度是同一套参数,对象范围不同而已:
dbeaver -console \ -driver mysql -url jdbc:mysql://10.0.0.8:3306 \ -user doc -password "$DB_PASS" \ -command "export-database \ --format markdown \ --output docs/dbdict \ --tables \"*\" \ --include-views --include-procedures"用 CLI 和 CI 让数据库文档自动生成
上面命令在开发机、脚本、runner 里行为一致,所以数据库文档自动生成基本就是「命令 + 定时器」两件事。最短的 CI 骨架:
jobs: dbdict: runs-on: ubuntu-latest steps: - run: | tar -xzf dbeaver-ce-linux.tar.gz ./dbeaver/dbeaver -console -command "export-database --format markdown --output docs/dbdict" - uses: actions/checkout@v3 with: path: docs-repo ref: gh-pages - run: cp -r docs/dbdict docs-repo/ && cd docs-repo && git add -A && git commit -m "auto dict $(date +%F)" && git push要点只有一个:runner 是无状态环境,连接串和密码从 secrets 取,产物推到单独的 docs 分支。无人值守跑批时,DBeaver 的 headless 支持在 plugins/org.jkiss.dbeaver.headless/ 插件里,参数细节以你安装的版本--help为准,别照抄博客。
文档没告诉你的 3 个坑:乱码、慢导出与模板路径
- 坑1:中文注释导出成乱码。原因是字符集没显式声明,控制台按默认编码解析。解法:导出命令加
--encoding UTF-8,老版本则用 JVM 参数-Dfile.encoding=UTF-8跑。 - 坑2:大库导出慢到像挂死。元数据是逐对象查的,串行且走网络往返,几百张表要等几分钟。解法:低峰期跑,或按 schema 拆成几批并行导出,别在白天高峰期触发。
- 坑3:模板路径找不到。CI 里工作目录和开发机不同,相对路径直接失效。解法:模板和输出都用绝对路径,先在 runner 里
echo $PWD确认工作目录再改。
顺带一提,界面文案的中文本地化在 plugins/org.jkiss.dbeaver.data.transfer/OSGI-INF/l10n/bundle_zh.properties,导出向导看不懂某个选项名时可以对照着查。
明天就能动手的 3 件事
- 挑一张被问得最多的表,走一遍导出向导生成 Markdown,贴进 wiki,顺手把缺失的字段注释补上。
- 把库级导出命令写成一个 shell 脚本,挂 crontab 或 CI 定时任务,让文档每天凌晨自己更新。
- 用 JSON 格式多导一份,接进内部的元数据服务,后续做字段变更告警就有现成的结构化输入。
【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考