1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SchemaSpyでサクッとER図やテーブル定義書を生成

Posted at

はじめに

既にDDLファイルはざっくりできてるから自動的にリバースしてくれるツールとかないかな~と思っていたら良いのがありました。

いくつか使用方法があるみたいですが、今回はDockerを使用したやり方を紹介します。

概要

  • SchemaSpy とは
  • 使い方

SchemaSpy とは

SchemaSpy はDBの接続情報さえ持っていればそこからテーブル定義やER図といった設計書を様々なフォーマットで出力してくれるツールです。(超便利)

使い方

まずはスパイ対象のDBを適当に起動します。(既にあればスキップしてください)

SQL
スクリーンショット 2024-08-15 224949.png

docker-compose.yml
スクリーンショット 2024-08-15 224930.png

起動したら、SchemaSpy用の作業フォルダの中で以下を行います。

  1. 公式Dockerイメージの取得

下記のコマンドでSchemaSpyのイメージをプルしてきます。

docker pull schemaspy/schemaspy

プルしたら以下のコマンドを実行します。(パスや認証情報は各々で置き換えてください)

docker run -v "$PWD/schema:/output(出力先のパス)" --net="host" schemaspy/schemaspy:snapshot -t <DBの種類(mysql postgresqlなど)> -host <ホスト:ポート [例localhost:3306]> -db <スキーマ名> -u <ユーザ名> -p <パスワード> -connprops useSSL\\=false -s <スキーマ名>

今回はdocker-compose.ymlで設定したDBの情報をもとに以下のようにします。

docker run -v "$PWD/schema:/output" --net="host" schemaspy/schemaspy:snapshot -t mysql -host localhost:3306 -db schema_spy -u schema_spy -p schema_spy -connprops useSSL\\=false -s schema_spy

※上記を実行した際に「java.io.IOException: Unable to create directory /output/tables」というエラーが発生した場合、出力先ディレクトリの権限を変更する必要があります。

sudo mkdir -p schema
sudo chmod 777 schema

無事に実行が完了すると、schemaディレクトリ(厳密にはdocker run -v "$PWD/" で指定したフォルダ)にファイル群が出力されると思います。

この中にHTMLやJSファイルもあるのでブラウザで確認すると、

スクリーンショット 2024-08-15 230924.png

スクリーンショット 2024-08-15 230958.png

スクリーンショット 2024-08-15 231025.png

こんな感じでテーブル定義情報を確認することができるようになります。

また、右上のボタンからExcel、CSV、PDF形式で出力することも可能です。

スクリーンショット 2024-08-15 231151.png

スクリーンショット 2024-08-15 231159.png

スクリーンショット 2024-08-15 231209.png

最後に

先に動作環境を作っちゃったけど設計書に書き出すのつら~って時におすすめです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?