7
4

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(MariaDB)で別データベースへまるごとデータコピーするワンライナー

Last updated at Posted at 2019-01-31

データベース間でデータをまるまるコピーしたい(要は同じ状態にしたい)ということがあります。
特に本番環境と開発環境を同じ状態にしたいということはよくあるでしょう。

どのDBMSでもエクスポート→インポートするのが一般的だと思います。
さて、MySQLの場合ですが
もちろん単純にmysqldumpでファイルにエクスポート、その後インポートでもできますが
実はファイルに出力しなくても一行でできてしまいます。ファイル消したりしなくていいので楽です。

mysqldump -uユーザー名 -pパスワード 移行元データベース名 | mysql -uユーザー名 -pパスワード 移行先データベース名

エクスポートツールmysqldumpの出力をそのままパイプで移行先に渡してやればいいだけです。
なぜこれができるかというと
・mysqldumpコマンドが出力しているのは単なるSQLである
・mysqlコマンドはSQLを受け取るとそれをそのまま実行してくれる
からです。

mysqldumpで出力されるSQLはCREATE TABLE+INSERTですが
CREATE TABLEの前にDROP TABLE IF EXISTがあるので移行先に同じテーブルがあっても予め削除しておく必要はありません。(TABLE以外、VIEWやPROCEDUREも同様)
Oracleなんかは予め同じテーブルを削除しておく必要があるので、この点MySQLは楽です。

7
4
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
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?