📚
SchemaSpyでER図を生成する [MySQL]
はじめに
SchemaSpy は、データベース内のスキーマのメタデータを分析し、ブラウザー表示可能な形式でその視覚的表現を生成する Java ベースのツール (Java 8 以降が必要) です。
今回、DBの把握のためにSchemaSpyを利用します。
対応DB
今回は、MySQLに接続して使いましたが、以下のDBで使えそうです。
DB2、Firebird、Impala、MySQL、MariaDB、Netezza、Oracle、PostgreSQL、Redshift、SQLite、SQL Server、Sybase、Teradata
事前準備
実行するにあたって、下記を準備する必要があります。
- SchemaSpyのjarファイル
- Java8以降のインストール
- 対象のDBに応じたJDBCドライバ
- Graphvizのインストール(オプション)
フォルダ構成
.
┣ drivers
┗ mysql-connector-j-8.3.0.jar
┣ schemaspy-6.2.4.jar
┗ schemaspy.properties
設定ファイル
schemaspy.properties
# DB種類
schemaspy.t=mysql
# JDBCドライバ場所
schemaspy.dp=drivers
# DBホスト
schemaspy.host=127.0.0.1
# DBポート番号
schemaspy.port=3306
# データベース名
schemaspy.db=mydb
# DBスキーマ名
schemaspy.s=mydb
# ユーザ名
schemaspy.u=root
# ユーザパスワード
schemaspy.p=root
# 出力先
schemaspy.o=output
コマンド
# 実行
java -jar schemaspy-6.2.4.jar -vizjs
# デバック
java -jar schemaspy-6.2.4.jar -vizjs -debug
直下に、output
フォルダが作成され、その中のindex.html
をブラウザで開くと閲覧できます。
設定ミスとかは、デバックコマンドで地道に解消しましょう。
カラムリストをページ切り替えせずに一括で見る
[-nopages]: データをページではなく 1 つの長いリストにする
# 実行
java -jar schemaspy-6.2.4.jar -vizjs -nopages
おわりに
ちなみに、output
フォルダを共有すれば見れるので数名しか閲覧しない状況であれば、ファイルサーバーとかにoutput
フォルダを置いて個々にローカルに落として閲覧してもらうスタイルでも良い気がします。
参考
Discussion