【MySQL】特定のテーブルをバックアップ(ダンプ)する方法
2019/03/29
あまりやりたくない事ですが、プログラム(システム)の都合や仕様上でどうしてもデータベース(のデータ)を直接編集する場面というのがあると思います。その場合の「いつでもデータを元に戻せる体制」をとる際、システムのDBデータを全部バックアップするのでは時間がかかってしまいがち。
ということで、今回は必要テーブルのみダンプする方法を備忘録としてポストしたいと思います。
なお、この作業はSQLではないので、phpMyAdmin上では実行できません。
WindowsならDOSプロンプト、UNIXではputtyなどのターミナルから接続した上での処理となります。
特定のテーブルをバックアップする
単一のテーブルのみをダンプする場合の記述
<文法>
$ mysqldump -u [ユーザー名] -p [データベース名] [テーブル名] > [ダンプファイル名.sql]
例として「shop_manage」データベースの「products」テーブルをダンプする例を記述すると、以下のようになります。
1 2 |
$ mysqldump -u username -p shop_manage products > shopmanage_dump.sql Enter password:******** ←データベースのパスワードを入力 |
↑ データベースのパスワードはコマンド発行のあとに入力する形です。
コマンド発行時、同時にデータベースパスワードを記述したいときは、オプション「-p」のあとにスペースをつけずにパスワードを書けば、Enter password でパスワードを別途入力する必要はありません。
ダンプ用のコマンドには、シングル、ダブルのクォーテーションマークもつけずに書きましょう。
複数テーブルをまとめてダンプする際の記述
単一の場合とほぼ同じで、単にテーブル名を続けて書くだけ。
やはりこちらもシングル、ダブルのクォーテーションマークはつけずに書きましょう。
文法
$ mysqldump -u [ユーザー名] -p [データベース名] [テーブル名1] [テーブル名2] [テーブル名3]... > [ダンプファイル名.sql]
例として「product_manage」データベースの「products」「sales」「customers」テーブルをダンプする例を記述すると、以下のようになります。
こちらはデータベースパスワードをオプション(-p)に続けて書いてみます。
1 |
$ mysqldump -u username -ppassword shop_manage products sales customers > shopmanage_dump.sql |
あっさりとバックアップファイルが出来上がるので、今日から怖いものなしですね。
全てのテーブルをバックアップする
普通に、データベース内の全てのテーブルをバックする方法も載せておきます。
文法
$ mysqldump -u [ユーザー名] -p [データベース名] > ダンプファイル名.sql
下記は一例です。
1 |
$ mysqldump -u username -ppassword shop_manage > shopmanage_dump.sql |