拓冰建站拓冰建站
首页 / 资讯中心 / 正文

DBeaver 数据字典文档生成:从表结构到自动化流水线

DBeaver 数据字典文档生成从表结构到自动化流水线【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver如果表结构已经变了你手工维护的文档永远追不上。DBeaver 本身就带着数据转移导出、ERD 图、DDL 生成这三件套足够你拼出一条数据字典文档自动生成流水线把库里的元信息查出来导出成 Markdown再挂上定时任务文档每天自己更新。文档和表对不上号的时候上线前常见的一幕前端问新订单表有哪几个字段你翻文档文档写 12 个字段实际表里有 16 个——要么有人加列没报备要么加了列忘了改文档。问题不在谁偷懒而在文档是第二份拷贝任何第二份拷贝都会落后于原始数据。正确的做法是把数据库当成唯一事实源把文档变成每次都可以重新生成的产物。DBeaver 的价值在于从读结构到落成文件中间的工具都现成。先认全这三个右键菜单ERD 图一图看懂表间关系在数据库导航器里选中一个 schema 或若干张表右键选 ER Diagram字段、类型、外键关系会铺成一张图。给新人讲这几张表怎么关联图的效率远高于字段清单。ERD 编辑器的实现在 plugins/org.jkiss.dbeaver.ui.editors.erd/想改导出样式可以顺着看。数据转移向导本文的主角右键一张表、一个视图甚至一段查询结果选 Export进入数据转移向导。第一步确认导出对象第二步选输出格式——Markdown、CSV、JSON、HTML、XML、SQL、TXT 各有独立导出器最后一步预览确认再落盘。这些导出器的源码在 plugins/org.jkiss.dbeaver.data.transfer/每种格式可选项表头、引号、空值显示、编码都注册在该目录的 plugin.xml 里想知道某个格式能调什么参数翻那里最准。Generate SQL结构本身也能导出容易被忽略的菜单右键表Generate SQL DDL把建表语句输出成 .sql 文件。对可复跑的文档来说DDL 比任何文字描述都更接近事实适合和字段清单放在一起归档。把字段清单导出成 MarkdownDBeaver 导出的是行数据而数据字典要的是表的元信息。思路不复杂先对数据库自己的字典视图写一条查询再把查询结果当数据导出成 Markdown。以 MySQL 为例这条查询把每张表的字段、类型、是否可空、默认值、注释一次性拉出来SELECT TABLE_NAME AS 表, COLUMN_NAME AS 字段, COLUMN_TYPE AS 类型, IS_NULLABLE AS 可空, COLUMN_DEFAULT AS 默认值, COLUMN_COMMENT AS 注释 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA your-database ORDER BY TABLE_NAME, ORDINAL_POSITION;在 DBeaver 的 SQL 编辑器里执行结果就是一张干净的表格。接着右键结果网格选 Export格式挑 Markdown产出的 md 表格可以直接贴进 README 或 wiki。几个实操细节勾选导出向导里与列注释相关的选项——注释列是数据字典的魂丢了注释文档只剩一半价值按 schema 过滤再查询别全库拉字典视图在大型库里很占时间结果要喂给脚本解析时改导出 JSON比 md 好处理PostgreSQL、SQLite 的字典视图名字不同但查询形态一样找本库的列元信息表如 information_schema.columns、sqlite_master把列拼成一张清单即可。生成的 md 按docs/库名/表名.md放进仓库从此每次加列都能在 git diff 里看见——这一条本身就值回票价。把文档生成挂进定时任务一次性导出只是起点重点是之后不用你碰。最简形式是一个每日脚本拉 DDL、重生成字段清单、提交。DBeaver 的导出向导支持把整套配置保存下来重跑时不必重新选格式、重新调参数脚本里直接复用即可。#!/bin/bash # 每日更新数据字典文档并提交 cd /path/to/database-docs mysqldump --no-data your-host:3306/your-database ddl.sql python3 gen_dict.py --db your-database --out tables/ git add . git commit -m auto: 更新数据字典 $(date %F) git push脚本干三件事dump DDL、重生成字段文档、提交推送。丢进 cron 就行。想挂进 CI 的话一个定时触发的 job 足够name: update-db-docs on: schedule: - cron: 0 2 * * * jobs: docs: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - run: bash scripts/update-dict.sh这段配置只做一件事每天凌晨 2 点跑一次上面那个脚本。说实话这部分最值得做当文档和表结构不再各走各的文档是不是最新的这个问题就不存在了。调导出编码、空值显示与 DDL 漂移先确认连接字符编码是 utf8mb4 再导出——中文乱码通常出在连接侧不是导出编码显式设置 nullString 选项——空值在文档里显示成什么不设置很容易被误读成无默认值大库按 schema 分批导出再拼文件——全库一次查询又慢又容易超时固定 DDL 的单一来源——mysqldump 和 Generate SQL 输出格式有细微差别diff 前先统一想继续深入SQL 模型和方言相关的逻辑在 plugins/org.jkiss.dbeaver.model.sql/自己写字典查询模板、处理各库差异时翻源码比猜快。下一步可以做的事挑一张核心表右键打开 ERD 图发给团队替换掉旧字段表格把核心表的字段清单导出为 Markdown放进仓库 docs 目录并提交在导出向导里固定 nullString 与编码设置保存整套配置供脚本复用把每日脚本挂进 cron先连续跑一周观察 diff 量是否在预期内文档稳定后接入 CI改成 schema 变更时触发而不是纯定时【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门