DBの情報抜き出し

DBのスキーマを抜き出してYAMLで出力するツールを作成。MySQLOracleで作ってみました。

---
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と連携かな〜。

しかし私はどこに向かっているのだろう。。。この手のツールは業務で利用するけれど、業務として作るとどうしてもその場で動けばいいやってことになるから作りこめないんですよね。

趣味だといろいろ試せるから楽しいかも(笑)

ゲーム業界だとツールプログラマーってのが絶対に必要なのですが、業務の場合にはツール専用のプログラマーって普通いないですよね。テスターとかもゲーム業界の方が潤沢に使っていたので本当はあの泥臭さが好きかもしれません(笑)