MySQL テーブルの複製(コピー)を作成する

テーブルデータを大量に変更したり、削除するとき、テスト用にテーブルの複製(コピー)が欲しいときがある。

コピーしたテーブルに対して、 SQLを発行してうまくいったら、本番用のテーブルに対して作業を行えば良い。

 

作業は2ステップ、作業時間は3分もかからない。気軽にテスト用のテーブルを作って色々なSQLにチャレンジできるのが嬉しい。

 

■空テーブルを作成する

元テーブルと同じフィールドを持つ空テーブルを作成する。

mysql> create table books2 like books;

 

■データをコピーする

INSERT文を実行する。

mysql> insert into books2 select * from books;

Query OK, 8765 rows affected (0.26 sec)
Records: 8765  Duplicates: 0  Warnings: 0 

1秒もかからずにコピー完了。

 

 

■参考情報:空テーブルを作成する(手作業編)

元テーブルと同じフィールドを持つ空テーブルを作成する。

元テーブルのCREATE TABLE文を調べる。

mysql> show create books; 

...省略...
| books | CREATE TABLE `books` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `book_name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10289 DEFAULT CHARSET=utf8 | 
...省略...

 

調べたCREATE文をテキストエディタでコピーして、books を books2 に変更する。

その変更したCREATE文をコピーペーストして実行する。

 

mysql> CREATE TABLE `books2` (
    ->   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    ->   `book_name` varchar(100) DEFAULT NULL,
    ->   PRIMARY KEY (`id`)
    -> ) ENGINE=MyISAM AUTO_INCREMENT=10289 DEFAULT CHARSET=utf8;

Query OK, 0 rows affected (0.07 sec)