読者です 読者をやめる 読者になる 読者になる

antを使ったDBのマイグレーション(1)

RoRマイグレーション相当の機能をantタスクを使って行うようにしたい。

利用シナリオ
(1)リポジトリから最新のソースをチェックアウト(バージョンごとのマイグレーションを取得)
(2)ant migrate で古いversion.sqlから順に適用されていく(過去のデータは全て消える前提)

毎日「リポジトリから最新のファイルに更新し、ant migrateをかける」ことを決めごとにしておけば、開発者それぞれで異なるDBを使っていてもスキーマが統一されるはず。

設計メモ
・バージョンごとに(version)_up.sql, (version)_down.sqlの二種類のファイルを必要とする。versionの形式はyyyyMMddhhmmssとか。
・現在のバージョンをschema_versionというテーブルに保存する。これはversionというvarchar型のカラムだけをもつテーブルで、そこに現在のバージョンが記録される。
・ant migrateを実行すると、schema_versionに記録されているバージョン以降のバージョンに対して、順次(version)_up.sqlを実行していく。実行の度にschema_version内のレコードをupdate。
・ant migrateを実行した時、schema_versionテーブルがなければ最初に作る。
・オプションで特定のバージョンへの以降も可。
・オプションでschema_versionのテーブル名や、versionのカラム名を変更可とする。

(1分後追記)
と、思ったら、Migrate4jやらMIGRATEdbなんてのがあるじゃないか…。