業務の中で、よくDBをテーブル単位でバックアップ取っておきたいことがあるので方法をメモとして書いておきたいと思います。
もし同じ状況でこの記事にたどり着いた方は参考にしてやってみてください。
関連記事:BEGIN、START TRANSACTIONでトランザクション処理する方法
目次
テーブル単位でバックアップを作成する方法
手順は簡単に言うと、
- 別テーブル(バックアップテーブル)を作る
- バックアップテーブルに本テーブルの内容を入れ込む
このように2ステップが必要です。
①別テーブル(バックアップテーブルを作る)
CREATE TABLE [バックアップテーブル名] LIKE [本テーブル名];
これで本テーブルと同じカラム構成のバックアップテーブルが作成されます。この時点では中身のレコードな無くカラの状態です。
②バックアップテーブルに本テーブルの内容を入れ込む
INSERT INTO [バックアップテーブル名] SELECT * FROM [本テーブル名];
先程作成したカラのバックアップテーブルに本テーブルの内容をコピーし、バックアップの完了です。
バックアップテーブルをリカバリーする方法
バックアップテーブルの内容を本テーブルにリカバリーしたい場合は以下の手順を踏みます。
- 本テーブルの中身をカラにする
- バックアップテーブルの内容を本テーブルに入れ込む
①本テーブルの中身をカラにする
TRUNCATE TABLE [本テーブル名];
本テーブル内の全てのレコードを削除しカラにします。
②本テーブルにバックアップテーブルの内容を入れ込む
INSERT INTO [本テーブル名] SELECT * FROM [バックアップテーブル名];
カラになっている本テーブルへバックアップテーブルの内容を全てコピーします。
これでリカバリーも完了です。
高橋直也(@naoya2_2)
フリーランスエンジニア。SEとして主に某企業顧客管理システムの開発、改修を担当している。ブログでは30歳未経験からSESを経てフリーランスになった経緯等を発信中。