DBの定義書を自動でつくりたいよ。日本語でね。
日本語テーブル名?つかわないよ!
そんな人はスルーでお願いします…
でも、使いたくないけど、客先からの要望で…なんて人用。
ま、しょうがないですよね。自分もそうでした。
環境
MySQLSQLite3
- docker用意しました。
- DB毎に接続用のJDBCドライバを用意
- dockerの/driversフォルダの下へJDBCドライバをマウント
- DBのテーブル名は__UTF-8__で。(他の文字コードは試してないです)
とりあえず実行
ま、このへんはDBによってイロイロ。
ググればシングルバイトのテーブル名なら普通にできる設定はイッパイでてくる。
実行結果をみても、とりあえずgraphvizを使わない所は日本語で表示できてます。
version: "3"
services:
schemaspy_jp:
image: "coneyware/schemaspy_jp"
container_name: "schemaspy_jp"
hostname: "schemaspy"
# ホストのネットワークに接続
network_mode: "host"
volumes:
- "path/to/output:/output"
- "path/to/drivers:/drivers"
- "path/to/schemaspy.properties:/schemaspy.properties"
問題はER図
schemaspy.propertiesの記述はDBのによっていろいろなんですが、公式サンプルみるとこんな感じ。
# type of database. Run with -dbhelp for details
schemaspy.t=mssql
# optional path to alternative jdbc drivers.
# dockerの/driversフォルダ。docker起動設定で好みのフォルダにマウントすればOK
# schemaspy.dp=path/to/drivers
# database properties: host, port number, name user, password
schemaspy.host=server
schemaspy.port=1433
schemaspy.db=db_name
# db scheme for which generate diagrams
# schema設定、mysqlだとdbと同じで良さげ
schemaspy.s=db_name
schemaspy.u=database_user
schemaspy.p=database_password
# output dir to save generated files
# dockerの/outputフォルダ。docker起動設定で好みのフォルダにマウントすればOK
# schemaspy.o=path/to/output
ドキュメントのドコさがしてもフォント指定ないんですがgraphvizじたいはUTF-8に対応しているハズ。
なんですが、化けるのはなぜかとおもって出力フォルダをあさってみるとgraphviz用のdotファイルを発見。
主力フォルダ/diagramsの下の.dotファイルですね。
フォント指定がヨロシクナイ。
結論
schemaspyにわたすconfig.fileの設定に以下を追加。
schemaspy.font="日本語フォント名"
たぶん、起動引数に-font "フォント名"
追加でも行けると思う。
フォント名は
windowsなら、"MS ゴシック"でも。
acrobatはいってれば"HeiseiKakuGo-W5"で、
どのOSでも日本語テーブル名でER図が出力されるかと思います。
ドキュメントにのってないんで、ソースから設定を見つけました。
なので、今後どうなるかわかりません。
2020/04/27 修正/追記
日本語フォントファイルだけつっこんだdocker環境用意したら、とくに設定なく日本語でました。
schemaspyのバージョンも6.1.0に上げたからかもしれませんが。