業務でクライアント確認環境で修正したデータを本番に移行してほしいとの依頼があった。
しかしテーブル定義の変更を伴う修正がまだ進行しているため、
単純にテーブルダンプしてデータを持っていけない、と。
そこで、何とかしてテーブル定義を比較する方法はないかなと思ったのが最初。
実際、 desc <テーブル名>;
で一つずつ見ていけばいいのですが、10テーブル以上になるのであきらめた。
※この方法が取れる前提として、 information_schema.COLUMNS
の閲覧が可能なこと。
※個人的にdescで表示される内容が見慣れているので、それ合わせにしている。
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME AS `Field`, COLUMN_TYPE AS `Type`, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS `Extra`
FROM COLUMNS
WHERE TABLE_SCHEMA = '[対象のテーブルスキーマ]' AND TABLE_NAME IN ([カラムを確認したいテーブル名])
ORDER BY TABLE_SCHEMA ASC, TABLE_NAME ASC, ORDINAL_POSITION ASC;
以上!
なんてことはない、descで拾ってくる内容を自分で拾い直しただけのこと(なんか抜けもれありそうな予感)。
しかし、これでテキストベースでごっそりdescが抜けるので、
WinMergeとか比較ツールで比較すれば割と正確にサクッと確認できる。
自分の備忘メモ。