勉強用の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