Help us understand the problem. What is going on with this article?

ER Master を利用してデータベースの初期化を自動化する

More than 5 years have passed since last update.

ER Master は超便利なツールだ

ユカイ、ツーカイ、カイハツ環境!(11):DB設計の神ツール「ERMaster」なら、ここまでできる (1/3) - @IT

ER Master は超便利なツールだ。

わかりやすく超便利だ。
erm.PNG

Eclipse のプラグインとして提供されているので、特に Java 開発者であれば一度は使ってみたほうがいい。神ツールと呼ばれるのにも納得すると思う。

ER Master を利用したスキーマの再構成

そんな ER Master は DDL、DML のエクスポートにも対応しているのだが、これは Ant から実行することもできる。

これを利用してデータベースの状態を初期化することができる。以下の例はデータベースに H2 Database を使用。

build.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project>
<project>

    <property name="sql_dir" location="build/erm" />
    <property name="erm" location="sample.erm" />
    <property name="ddl" value="create-schema.sql" />
    <property name="dml_name" value="initialization" />

    <target name="resetDB">
        <!-- スキーマ構築 DDL の作成 -->
        <ermaster.ddl diagramFile="${erm}" outputfile="${sql_dir}/${ddl}" />

        <!-- 初期データ登録スクリプトの作成 -->
        <ermaster.testdata diagramfile="${erm}" outputdir="${sql_dir}" format="0">
            <testdata name="${dml_name}" />
        </ermaster.testdata>

        <!-- スキーマ構築スクリプトの実行 -->
        <exec executable="java">
            <arg line="-cp lib/h2-1.4.185.jar" />
            <arg value="org.h2.tools.RunScript" />
            <arg line="-url jdbc:h2:~/test" />
            <arg line="-script ${sql_dir}/${ddl}" />
            <arg value="-continueOnError" />
        </exec>

        <!-- 初期データ登録スクリプトの実行 -->
        <exec executable="java">
            <arg line="-cp lib/h2-1.4.185.jar" />
            <arg value="org.h2.tools.RunScript" />
            <arg line="-url jdbc:h2:~/test" />
            <arg line="-script ${sql_dir}/${dml_name}.sql" />
        </exec>
    </target>

</project>

Eclipse 上からresetDBターゲットを実行することで、ER Master に登録されたデータから自動的に DDL、DML を作成して実行してくれる。

※事前に公式サイトの設定に従って、必要な設定は行っておく必要はある。

使いどころ

  • スキーマが確定していないので、開発しながら決めていきたい。
  • テーブルに初期データを登録したい。

こういう場面は往々にしてある。もちろん開発フレームワークがこれを実現してくれる場合もあるだろうけれど、なかなかそうでないことも多いだろう。そういう場合には使えると思う。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away