はじめに
あるテーブルのカラムが不要になったので、除却したーい!
けど、利用している機能がわからない。
カラム名でGREPすれば一発だ!って思ってGREPしたら、カラム名が汎用的な名前でたくさん抽出されてしまった。
ほしいのは、Aテーブルのカラム だけなのに。
そんな時に grep と xargs を使って調査したのでそのやり方を残します。
前提
SQLをファイルに記載している
やりかた
テーブル名でGREPして、さらにカラム名でGREPする。
grep -irEl --include='*.対象ファイルの拡張子' 'テーブル名' . | xargs --no-run-if-empty grep -irEl 'カラム名'
grepコマンドのオプション
i:大文字小文字区別しない
r:サブディレクトリも検索
E:正規表現を使いたい
|:ファイルパスだけ表示
--include:特定の拡張子だけ検索
xargsコマンドのオプション
--no-run-if-empty:1個目のGREP結果が存在する場合は実行。存在しない場合は実行しない。
仕組み
1個目のGREPで、テーブル名を使用しているファイル一覧を抽出
2個目のGREPで、カラム名を使用しているか?を判定
注意点
あくまでも1ファイル内で、テーブル名とカラム名を含むファイルを抽出しているだけなので、別のテーブルの同名カラム名で抽出している恐れがある。
このため、目検のチェックは必要。
だが、対象をだいぶ絞り込めるのでお勧めです。
補足
Windowsの場合は、Git Bash を使えばよい。