DBからdumpを取得して、取得したdumpを他のDBへインサートする方法です。
今回は特定のテーブルを指定してdumpを取得する方法について書いています。
DBdumpとは
DBの中にあるデータを外部のファイル等に出力したものをdump(ダンプ)といい、mysqlでは「mysqldump」というコマンドでdumpを取ることができます。
「mysqldump」を実行すると、拡張子がsqlのファイルが作成されます。ファイルの中身はsqlのインサート文になっていて、このsqlをファイルごと実行することで、取得したdumpを他のDBへインサートすることができます。
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で、接続情報が同じになっています。しかし実際には例えばステージング環境のデータをローカル環境に持ってきてテストデータとして使いたい、というような感じになると思うので、接続情報は違うものになります。
