DBの情報抜き出し
DBのスキーマを抜き出してYAMLで出力するツールを作成。MySQLとOracleで作ってみました。
--- type: MySQL table: - Name: isbn_list Engine: MyISAM Version: 10 Row_format: Dynamic Rows: 25 Avg_row_length: 235 Data_length: 5892 Max_data_length: 281474976710655 Index_length: 2048 Data_free: 0 Auto_increment: Create_time: 2007-12-07 06:06:06 Update_time: 2007-12-30 05:31:56 Check_time: Collation: utf8_general_ci Checksum: Create_options: Comment: Calumn: - Field: jan Type: text Collation: utf8_general_ci Null: NO Key: PRI Default: Extra: Privileges: select,insert,update,references Comment: JANコード - Field: site Type: text Collation: utf8_general_ci Null: NO Key: PRI Default: Extra: Privileges: select,insert,update,references Comment: 情報元 Index: - Table: isbn_list Non_unique: 0 Key_name: PRIMARY Seq_in_index: 1 Column_name: site Collation: A Cardinality: Sub_part: 20 Packed: Null: Index_type: BTREE Comment: - Table: isbn_list Non_unique: 0 Key_name: PRIMARY Seq_in_index: 2 Column_name: jan Collation: A Cardinality: 25 Sub_part: 20 Packed: Null: Index_type: BTREE Comment:
上みたいな出力になります。少し端折っていますが。。。
中身はテーブルの一覧を取得、カラムの情報取得、インデックスの情報取得。って感じで取得できた情報をすべて連想配列に入れています。
YAMLにするライブラリは「spyc.php5」を利用させていただきました。
本当はこのデータからExcelにDB定義書を吐き出したり、テスト環境のYAMLと本番環境のYAMLをDiffして構造に変更ないかを確かめたり、現存するDaoファイルと比較して足りないものを生成するとかの中間データとして使えればいいかな。
とりあえずExcel出力は手元にあるので、そっちにつなげてからDaoと連携かな〜。
しかし私はどこに向かっているのだろう。。。この手のツールは業務で利用するけれど、業務として作るとどうしてもその場で動けばいいやってことになるから作りこめないんですよね。
趣味だといろいろ試せるから楽しいかも(笑)
ゲーム業界だとツールプログラマーってのが絶対に必要なのですが、業務の場合にはツール専用のプログラマーって普通いないですよね。テスターとかもゲーム業界の方が潤沢に使っていたので本当はあの泥臭さが好きかもしれません(笑)