【Rails】【MySQL】【テスト】限りなく生データに近いデータを使うためにやったこと
現在、テストを実施していますが、出来るだけテスト用のデータは作りたくないと思い、
定期的に作成している「dump」ファイルで一気に本番環境のデータを
テスト環境のDBに入れています。
もちろん、本番環境であるためテスト環境のDBヘ挿入後は
しかるべき修正が必要です。
その際、案外、見落としがちなのが
「emailアドレス」です。
そして特定データだけ有効でないemailアドレスに変更するというのも
効率が悪く、抜け漏れが発生するかと思い、
一気に有効でないemailアドレスに変更しました。
その際に行った作業は以下の通りです。
前提条件;dumpファイルでデータが挿入済みであること
1・カラムに「email」とあるテーブルを特定する。
Railsの場合ですとマイグレーションファイルにてテーブルの作成を行いますので、
私はマイグレーションファイルから抽出しました。
cd db/migrate grep '%email%' *.*
2・emailアドレスを更新する。
mysql -u root -p g08m11 update campaign_entry_users set email = concat('campaign_entry_user', id, '@g08m11.com') where email is not null and email <> '';
g08m11というDBを使用するMySQLにrootユーザーでログインした後以下の内容のSQLを実行しています。
・campaign_entry_usersというテーブルのemailを更新
・更新する値はテーブル名(camapaign_entry_users)と主キー(id)とドメイン名(@g08m11.com)
を文字連結した値
・条件はemailカラムがnullではないまたは、空白文字でないレコード
不要な文字とは言ってもどんな値にすれば迷っている方は
concat('対象テーブル',主キー,'不要なメアド')を選択肢の一つにしても良いかと思います。
テストデータの作成に困っている方の助けになれば幸いです。