【mysql】DBからdumpを取得して、他のDBへdumpをインサートする方法

DBからdumpを取得して、取得したdumpを他のDBへインサートする方法です。
今回は特定のテーブルを指定してdumpを取得する方法について書いています。

DBdumpとは

DBの中にあるデータを外部のファイル等に出力したものをdump(ダンプ)といい、mysqlでは「mysqldump」というコマンドでdumpを取ることができます。

「mysqldump」を実行すると、拡張子がsqlのファイルが作成されます。ファイルの中身はsqlのインサート文になっていて、このsqlをファイルごと実行することで、取得したdumpを他のDBへインサートすることができます。


STEP.1
DB接続情報を用意
ユーザ名、パスワード、ホスト名、ポート番号、DB名などの接続情報を用意する。

STEP.2
dump取得
用意したDB接続情報を使用してDBのdumpを取得する。

STEP.3
dumpをインサート
取得したdumpをインサートする。

DBdumpの取得

下記のコマンドでdumpを取得します。

mysqldump -u [ユーザ名] -p -h [ホスト名] -P [ポート番号] -t [DB名] [テーブル名] > [出力ファイル名]

試しにDB接続情報を

  • ユーザ名:user
  • ホスト名:127.0.0.1
  • ポート番号:3306
  • DB名:sample_db

として、テーブル「sample_table」のdumpを取得し、「dump_sample_table.sql」というファイルに出力する場合を考えてみると次のようになります。

mysqldump -u user -p -h 127.0.0.1 -P 3306 -t sample_db sample_table > dump_sample_table.sql

このコマンドを実行するとパスワードの入力を求められるので、パスワードを入力してエンターを押下すると、dumpの取得が始まります。dumpの取得が完了すると、カレントディレクトリに「dump_sample_table.sql」が作成されます。これでdumpの取得は完了です。

DBdumpのインサート

先ほど取得したsqlファイルを実行し、DBへデータをインサートします。インサートには下記のコマンドを使用します。

mysql -u [ユーザ名] -p -h [ホスト名] -P [ポート番号] [DB名] < [ファイル名] 

インサート先は先ほどと同じく下記の接続情報のDBだとすると、

  • ユーザ名:user
  • ホスト名:127.0.0.1
  • ポート番号:3306
  • DB名:sample_db
mysql -u user -p -h 127.0.0.1 -P 3306 sample_db < dump_sample_table.sql

となります。このコマンドを実行するとパスワードの入力を求められるので、入力するとインサートが始まります。なお、ここでは同じdumpを取得したDBとインサート先のDBで、接続情報が同じになっています。しかし実際には例えばステージング環境のデータをローカル環境に持ってきてテストデータとして使いたい、というような感じになると思うので、接続情報は違うものになります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です