search
LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

Organization

【MySQL】テーブルを丸ごとバックアップする

やりたいこと

テーブルの中の情報も含めて、同じテーブル(バックアップ用)を作成すること

SQL

既存のテーブル→「info」
新規のテーブル→「info_bk」

/*1.テーブル定義を複製する*/
CREATE TABLE info_bk LIKE info;

/*2.複製したテーブル定義を確認する*/
show full columns from info_bk;

/*3.既存テーブルのデータを新規テーブルに挿入する*/
INSERT INTO info_bk SELECT * FROM info;

/*4.新規テーブルの中身を確認する*/
select * from info_bk;

解説

1.テーブル定義を複製する CREATE TABLE info_bk LIKE info;
[infoテーブル]をもとに、新しく[info_bk]という箱が作成されます。

中身のデータは入っていませんが、インデックスやプライマリーキーなどもコピーして作成されます。

以下のSQLを使うと、データの移行も含めて、新しいテーブルができますが、インデックスやプライマリーキー、デフォルト値は再設定が必要になります。

CREATE TABLE info_bk SELECT * FROM info;

3.既存テーブルのデータを新規テーブルに挿入する INSERT INTO info_bk SELECT * FROM info;
[info]テーブルのデータを、[info_bk]テーブルの中に追加できます。

VALUESをselectの前に書きたくなってしまいますが、このinsert文については、VALUESは必要ありません。
info_bkとinfoのカラムの数が一致する必要があります。(1でテーブルを複製しているので、カラム数は一致していますね。)

以上です!

最後まで読んでいただいた方、ありがとうございました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1