MySQLで複数テーブルから指定条件のレコードをエクスポートしたい

動機

とあるキーに紐づくレコードを、別のデータベースに移行したかった。

方法

mysqldumpに以下のオプションを指定して実行する。

  • -t: DROP TABLE, CREATE TABLEを出力しない
  • テーブル名: エクスポートしたいテーブルを指定する
  • --where: テーブルに指定したい条件を指定する

users, browsing_histories, purchase_historiesというテーブルにuser_idカラムがある場合の例。

$ mysqldump -u user -p -t database users browsing_histories purchase_histories --where "user_id = '123'" > dump.sql
$ mysql -u user -p database < dump.sql