勉強用のMySQLをいじっている時に,DROP TABLEやALTER TABLEなどの,
今回は,
デモンストレーション環境について
今回利用している環境は,
いくつかのテーブルをコピーする方法
まずはテーブルをコピーしてみましょう。といっても,
CREATE TABLE .. LIKEとINSERT INTO .. SELECTを利用したコピー
mysql> use vmstat
mysql> CREATE TABLE vmstat_bak LIKE vmstat;
mysql> INSERT INTO vmstat_bak SELECT * FROM vmstat;
mysql> use vmstat mysql> CREATE TABLE vmstat_bak LIKE vmstat; mysql> INSERT INTO vmstat_bak SELECT * FROM vmstat;
CREATE TABLE vmstat_bak LIKE vmstatは「vmstatテーブルと同じカラム定義とテーブル属性でvmstat_bakというテーブルを作る」という意味のステートメントです。同じカラム定義とテーブル属性を持っているvmstat_bakテーブルに,INSERT INTO vmstat_bak SELECT * FROM vmstatとすることで,RENAME TABLE vmstat TO vmstat_old, vmstat_bak TO vmstatステートメントを実行することで,
CREATE TABLE .. AS SELECT ..を利用したコピー
mysql> CREATE TABLE vmstat_bak_2 AS SELECT * FROM vmstat;
mysql> CREATE TABLE vmstat_bak_2 AS SELECT * FROM vmstat;
CREATE TABLE vmstat_bak2 AS SELECTクエリーは,SHOW CREATE TABLEステートメントでテーブル定義を確認してみると,
mysql> SHOW CREATE TABLE vmstat\G mysql> SHOW CREATE TABLE vmstat_bak_2\G
このテーブルの属性情報はコピーされないというのは良し悪しで,TRUNCATE TABLE vmstatステートメントで一度vmstatテーブルの中身を空にしてから,INSERT INTO vmstat SELECT * FROM vmstat_bak_2ステートメントで行を全てコピーしなおします。
mysqldumpコマンドを利用してコピー
本当はこれはテーブルの「コピー」ではなく,mysqldumpコマンドは論理バックアップを取得するための,
mysqldumpコマンドはバックアップを標準出力に出力してしまうので,CREATE TABLEステートメントとINSERT INTOステートメントが並んでいるのが確認できます。このように,mysqldumpコマンドです。mysqlコマンドの標準出力にsqlファイルを与えるか,mysqlコマンドからsource vmstat.sqlとすることで,
$ mysqldump vmstat vmstat > vmstat.sql $ less vmstat.sql $ mysql vmstat < vmstat.sql