首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SchemaSpy 結合 MySQL 實現資料庫結構視覺化分析與文件化

     編輯:MySQL 資料庫相關知識

工具介紹

SchemaSpy 是 Java 開發的資料庫中繼資料分析工具,掃描 Schema 生成互動式 HTML 文件,包含 ER 圖、表關聯、異常檢測、欄位統計等,適合文件化、審計、新人上手。

安裝需求

  • Java JRE 8+
  • Graphviz(繪製 ER 圖必須)
  • MySQL Connector/J (mysql-connector-java.jar)
  • SchemaSpy 最新 JAR:GitHub Releases

配置檔案:mysql.properties

# mysql.properties
description=MySQL Production Database
driver=com.mysql.cj.jdbc.Driver
connectionSpec=jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&allowPublicKeyRetrieval=true
driverPath=/usr/share/java/mysql-connector-java.jar

元資料提示檔:schemaspy.meta.xml(處理隱性關聯)

當表間無外鍵但有邏輯關聯(如 parent_id 對應 id),提供提示讓 SchemaSpy 識別:



    Production Database - Generated by SchemaSpy
    
        
        

執行指令

java -jar schemaspy-6.1.0.jar \
    -t mysql \
    -host 127.0.0.1 \
    -port 3306 \
    -db mydb \
    -u readonly_user \
    -p password \
    -connprops useSSL=false\\&allowPublicKeyRetrieval=true \
    -dp /usr/share/java/mysql-connector-java.jar \
    -meta schemaspy.meta.xml \
    -o /var/www/html/schemaspy_output/ \
    -imageformat png

關鍵參數說明

參數說明
-t資料庫類型:mysql, pgsql, oracle, sqlserver 等
-host/-port/-db連線資訊
-u/-p唯讀帳號(建議專用分析帳號)
-dpJDBC 驅動 JAR 路徑
-meta元資料提示檔(可選)
-o輸出目錄(需 Web 伺服器可讀)
-imageformat圖片格式:png, svg
-connpropsJDBC 額外連線屬性

自動化部署:Crontab 定時生成

# /etc/cron.d/schemaspy
# 每天凌晨 2 點重新生成
0 2 * * * schemaspy_user /usr/local/bin/generate_schemaspy.sh >> /var/log/schemaspy.log 2>&1
#!/bin/bash
# generate_schemaspy.sh
cd /opt/schemaspy
java -jar schemaspy-6.1.0.jar \
    -t mysql -host 127.0.0.1 -port 3306 -db mydb \
    -u spy_user -p "$SPY_PASS" \
    -dp /usr/share/java/mysql-connector-java.jar \
    -meta schemaspy.meta.xml \
    -o /var/www/html/schemaspy/ \
    -imageformat svg

輸出報告核心功能導覽

分頁功能價值
Tables所有表列表:行數、大小、欄位數、註解、父/子表連結快速掌握表規模與關聯
RelationshipsER 圖:可點擊縮放、過濾、顯示/隱藏關聯類型視覺化理解 Schema 拓撲
Constraints顯式外鍵約束列表審計完整性約束覆蓋率
Anomalies潛在問題:無索引表、可為 NULL 的唯一鍵、單欄表、自增欄位命名不規範等發現設計缺陷與技術債
Columns全庫欄位搜尋:按名稱/型別過濾快速定位特定欄位用法

進階用法

  1. 多 Schema 合併:多次執行指定不同 -db,輸出至不同子目錄
  2. CI/CD 整合:Pipeline 中執行,構建成品上傳至文件站點
  3. 只讀帳號最小權限:GRANT SELECT, SHOW VIEW, PROCESS ON *.* TO 'spy'@'%';
  4. 大型資料庫優化:-nopages 跳過詳細頁面生成、-noviews 忽略視圖

替代工具對比

工具語言特色授權
SchemaSpyJava命令列、HTML 輸出、CI 友善、支援 10+ 資料庫LGPL
MySQL WorkbenchC++/PythonGUI、逆向工程、模型設計、同步GPL
Dataedo.NET文件導出 PDF/HTML、描述編輯、團隊協作商業
dbdocs.ioNode.js雲端文件、Markdown 定義、版本控制Freemium
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved