vimで指定したテーブルのカラム一覧を挿入する
プログラム中で、データベースからSELECT文を作るときに、テーブルのカラム数が多いと割とメンドクサイですよね。ぐぐっても出てこなかったので作りました。
まず、指定したテーブルのカラム一覧を取得するシェルスクリプトを作ります。
- getcolumn.sh
#!/bin/bash echo "SELECT concat('\'',column_name,'\',') FROM information_schema WHERE table_schema='DB名' AND table_name='$1' ORDER BY ordinal_position "|mysql -uユーザー -pパスワード -N
SELECT concat('\'',column_name,'\',') FROM information_schema WHERE table_schema='DB名' AND table_name='$1' ORDER BY ordinal_position
あとはMySQLのクライアントに流し込むだけですが、ポイントは『-N』オプション、これで、カラム名表示を消しています。
あとは任意の挿入したい場所でvimのコマンドで
:r!getcolumn.sh テーブル名
でズバッと挿入できます。
使っているフレームワークや、ORマッパーによって、自動で追加されているカラム、作成・更新・削除日時を除外しておくというのもありです。
SELECT concat('\'',column_name,'\',') FROM information_schema WHERE table_schema='DB名' AND table_name='$1' AND column_name NOT IN('create_time','update_time','delete_time') ORDER BY ordinal_position