こんにちは!まちいろの森です。
ローカル環境では再現しない不具合がテスト環境では再現する…、テスト環境でお客様が入力したデータを利用してローカル環境で不具合を確認したい、 テスト環境のマスタをローカル環境に一括で登録したい…などという方は少なくないと思います。 私も以前、上記と同じ悩みを持っており、SQLコマンドを利用してテスト環境のデータをローカル環境へ登録する作業が簡単にできるようになりました。 なので今回はMySQLのデータベースのデータ削除、データ一括インポートコマンドをご紹介したいと思います!
サーバー上でバックアップ取得
バックアップ取得です。インポートしたい単位がテーブル単位なのかデータベース単位なのかでバックアップ取得のコマンドが異なります。 今回は両方ご紹介します!
データベース
mysqldump -u[データベースのユーザ名] -p[データベースのパスワード] [データベース名] --default-character-set=utf8 > [エクスポートしたいファイル名].sql
対象テーブル
mysql -N -u[データベースのユーザ名] -p[データベースのパスワード] [データベース名] -e"show tables '[テーブル名]';" | xargs mysqldump -u[データベースのユーザ名] -p[データベースのパスワード] [データベース名] -t --default-character-set=utf8 > [エクスポートしたいファイル名].sql
※t_から始まるテーブル名すべてをエクスポートしたい場合
mysql -N -u[データベースのユーザ名] -p[データベースのパスワード] [データベース名] -e"show tables like 't_%';" | xargs mysqldump -u[データベースのユーザ名] -p[データベースのパスワード] [データベース名] -t --default-character-set=utf8 > [エクスポートしたいファイル名].sql
取り込みたい環境(ローカル環境)のデータ削除
バックアップ取得が完了したので、データ削除です。
データベース自体削除
drop database [データベース名];
対象テーブル
drop table [テーブル名];
※対象テーブルを削除する場合、データベースを以下コマンドで選択しておくこと!
use [データベース名];
取り込みたい環境(ローカル環境)へのインポート
インポート手順になります。
データベース
データベースを削除したので、データベース作成・実行権限を持つユーザを作成を行ってからインポートします。
CREATE DATABASE [データベース名] DEFAULT CHARACTER SET utf8; GRANT ALL PRIVILEGES ON [データベース名].* TO [ユーザ名]@localhost IDENTIFIED BY '[パスワード]'; mysql -u[データベースのユーザ名] -p[データベースのパスワード] [データベース名] < [インポートしたいファイル名].sql
テーブル
mysql -u[データベースのユーザ名] -p[データベースのパスワード] [データベース名] < [インポートしたいファイル名].sql
最後に
データ一括削除・インポート、不具合を確認する上で便利なコマンドになります。 ぜひみなさんも利用してみてください!
ただし、削除にはお気をつけください。(必ずバックアップを取ることをお忘れなく!!!)