據字典文檔生成:從表結構到自動化流水線)
DBeaver 數(shù)據字典文檔生成從表結構到自動化流水線【免費下載鏈接】dbeaverFree universal database tool and SQL client項目地址: https://gitcode.com/GitHub_Trending/db/dbeaver如果表結構已經變了你手工維護的文檔永遠追不上。DBeaver 本身就帶著數(shù)據轉移導出、ERD 圖、DDL 生成這三件套足夠你拼出一條數(shù)據字典文檔自動生成流水線把庫里的元信息查出來導出成 Markdown再掛上定時任務文檔每天自己更新。文檔和表對不上號的時候上線前常見的一幕前端問新訂單表有哪幾個字段你翻文檔文檔寫 12 個字段實際表里有 16 個——要么有人加列沒報備要么加了列忘了改文檔。問題不在誰偷懶而在文檔是第二份拷貝任何第二份拷貝都會落后于原始數(shù)據。正確的做法是把數(shù)據庫當成唯一事實源把文檔變成每次都可以重新生成的產物。DBeaver 的價值在于從讀結構到落成文件中間的工具都現(xiàn)成。先認全這三個右鍵菜單ERD 圖一圖看懂表間關系在數(shù)據庫導航器里選中一個 schema 或若干張表右鍵選 ER Diagram字段、類型、外鍵關系會鋪成一張圖。給新人講這幾張表怎么關聯(lián)圖的效率遠高于字段清單。ERD 編輯器的實現(xiàn)在 plugins/org.jkiss.dbeaver.ui.editors.erd/想改導出樣式可以順著看。數(shù)據轉移向導本文的主角右鍵一張表、一個視圖甚至一段查詢結果選 Export進入數(shù)據轉移向導。第一步確認導出對象第二步選輸出格式——Markdown、CSV、JSON、HTML、XML、SQL、TXT 各有獨立導出器最后一步預覽確認再落盤。這些導出器的源碼在 plugins/org.jkiss.dbeaver.data.transfer/每種格式可選項表頭、引號、空值顯示、編碼都注冊在該目錄的 plugin.xml 里想知道某個格式能調什么參數(shù)翻那里最準。Generate SQL結構本身也能導出容易被忽略的菜單右鍵表Generate SQL DDL把建表語句輸出成 .sql 文件。對可復跑的文檔來說DDL 比任何文字描述都更接近事實適合和字段清單放在一起歸檔。把字段清單導出成 MarkdownDBeaver 導出的是行數(shù)據而數(shù)據字典要的是表的元信息。思路不復雜先對數(shù)據庫自己的字典視圖寫一條查詢再把查詢結果當數(shù)據導出成 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 編輯器里執(zhí)行結果就是一張干凈的表格。接著右鍵結果網格選 Export格式挑 Markdown產出的 md 表格可以直接貼進 README 或 wiki。幾個實操細節(jié)勾選導出向導里與列注釋相關的選項——注釋列是數(shù)據字典的魂丟了注釋文檔只剩一半價值按 schema 過濾再查詢別全庫拉字典視圖在大型庫里很占時間結果要喂給腳本解析時改導出 JSON比 md 好處理PostgreSQL、SQLite 的字典視圖名字不同但查詢形態(tài)一樣找本庫的列元信息表如 information_schema.columns、sqlite_master把列拼成一張清單即可。生成的 md 按docs/庫名/表名.md放進倉庫從此每次加列都能在 git diff 里看見——這一條本身就值回票價。把文檔生成掛進定時任務一次性導出只是起點重點是之后不用你碰。最簡形式是一個每日腳本拉 DDL、重生成字段清單、提交。DBeaver 的導出向導支持把整套配置保存下來重跑時不必重新選格式、重新調參數(shù)腳本里直接復用即可。#!/bin/bash # 每日更新數(shù)據字典文檔并提交 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: 更新數(shù)據字典 $(date %F) git push腳本干三件事dump DDL、重生成字段文檔、提交推送。丟進 cron 就行。想掛進 CI 的話一個定時觸發(fā)的 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 前先統(tǒng)一想繼續(xù)深入SQL 模型和方言相關的邏輯在 plugins/org.jkiss.dbeaver.model.sql/自己寫字典查詢模板、處理各庫差異時翻源碼比猜快。下一步可以做的事挑一張核心表右鍵打開 ERD 圖發(fā)給團隊替換掉舊字段表格把核心表的字段清單導出為 Markdown放進倉庫 docs 目錄并提交在導出向導里固定 nullString 與編碼設置保存整套配置供腳本復用把每日腳本掛進 cron先連續(xù)跑一周觀察 diff 量是否在預期內文檔穩(wěn)定后接入 CI改成 schema 變更時觸發(fā)而不是純定時【免費下載鏈接】dbeaverFree universal database tool and SQL client項目地址: https://gitcode.com/GitHub_Trending/db/dbeaver創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考