SQL総復習④ ダンプとリストア
こんにちは!
スマレジ テックファームのMichiです!
今回は『SQL総復習④ ダンプとリストア」編です。
ダンプとリストアとは?
データベースからテーブルやデータを抜き取り、sqlファイルに変換することをダンプ、ダンプしたファイルから再度テーブルやデータを生成することをリストアといいます。
コマンド
ダンプとリストアを実行するには、下記のコマンドを実行します。
ダンプ
# 全データベースのダンプ $ mysqldump -u {ユーザー名} -p -x --all-databases > {ファイル名}.sql # 指定したデータベースのダンプ $ mysqldump -u {ユーザー名} -p -x {データベース名} > {ファイル名}.sql # 指定したテーブルのダンプ $ mysqldump -u {ユーザー名} -p -x {データベース名} {テーブル名} > {ファイル名}.sql
ちなみに、コマンド中の-x
は「バックアップ実行中は全テーブルをロックする」というオプションです。ロックすることで、ダンプ中にデータの更新が実行されてテーブル間で整合性が取れなくなる事態を防ぎます。
リストア
# 全データベースのリストア $ mysql -u {ユーザー名} -p < {ファイル名}.sql # 指定したデータベースのリストア $ mysql -u {ユーザー名} -p {データベース名} < {ファイル名}.sql
実践
前回の記事『SQL総復習③ インデックス』で使用したusers
テーブルを使用します。テーブルの作成方法はそちらに記載していますので、この記事では割愛します。
ダンプする
※windowsを使用している方は、PoweShellで操作すると文字化けが発生するので、コマンドプロンプトかGit Bashを使用してください。筆者はGit Bashを使用しました。
①sqlファイルを出力したいディレクトリまで移動して、ダンプコマンドを入力。パスワードを要求されるので入力。
$ mysqldump -u root -p -x blog users > 20230330_dump_users.sql Enter password: ****
②ls
コマンドで確認すると、20230330_dump_users.sql
ファイルが作成されているのが分かる。
$ ls __pycache__/ 20230330_dump_users.sql model.py names.xlsx requirements.txt seeder.py
③ファイルの中身を確認してみると、対象テーブルのCREATE TABLE
文とINSERT
文が記載されている。
リストアする
①テーブルを丸ごと削除
DROP TABLE users;
②ダンプファイルがあるディレクトリまで移動して、リストアコマンドを入力。パスワードを要求されるので入力。
$ mysql -u root -p blog < 20230330_dump_users.sql Enter password: ****
③データベースを確認。削除前の状態に戻っている
まとめ
データベースのダンプとリストアについて解説しました。実務では結構使うことの多いスキルなのですが、入門本に載ってないことが多いので今回記事にしてみました。
ここまでお読みいただきありがとうございました。