1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ステージング環境から本番環境にデータ移行する際のテーブル定義の比較(MySQL)

Posted at

業務でクライアント確認環境で修正したデータを本番に移行してほしいとの依頼があった。
しかしテーブル定義の変更を伴う修正がまだ進行しているため、
単純にテーブルダンプしてデータを持っていけない、と。

そこで、何とかしてテーブル定義を比較する方法はないかなと思ったのが最初。
実際、 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とか比較ツールで比較すれば割と正確にサクッと確認できる。

自分の備忘メモ。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?