【Django】MySQLの特定テーブルをdump・importする方法
この記事の目次
MySQLの特定テーブルをダンプ・インポートする方法
MySQLでデータベースのバックアップや特定テーブルのエクスポート・インポートは、運用やデータ管理に欠かせないスキルです。本記事では、MySQLのmysqldump
コマンドを使って、特定のテーブルのみをダンプ(バックアップ)する方法と、それをインポートする方法について解説します。
1. mysqldumpコマンドとは?
mysqldump
は、MySQLデータベースの内容をファイルにエクスポートするためのコマンドです。データベース全体だけでなく、特定のテーブルのみをエクスポートすることも可能です。エクスポートされたファイルはテキスト形式で保存され、後でデータベースに復元する際に使われます。
2. 特定のテーブルをダンプする方法
まず、特定のテーブルのみをダンプする方法を見てみましょう。複数のテーブルをスペースで区切ることで、必要なテーブルのみをバックアップできます。
ダンプコマンドの基本構成
次のコマンドをターミナルで実行することで、特定のテーブルだけをダンプできます。
mysqldump -u myUser -p myDatabase tableA tableB tableC > my_selected_tables_dump.sql
myUser
: MySQLにログインする際のユーザー名myDatabase
: ダンプしたいテーブルが存在するデータベースの名前tableA
,tableB
,tableC
: ダンプしたい特定のテーブル名my_selected_tables_dump.sql
: ダンプファイルを保存するファイル名
例:
mysqldump -u sampleUser -p customerDB orders products transactions > backup_tables.sql
この例では、customerDB
データベース内のorders
, products
, transactions
の3つのテーブルのみがbackup_tables.sql
というファイルに保存されます。
パスワード入力の省略
パスワードを直接指定したい場合、以下のように-p
オプションの後にパスワードを続けて入力します(セキュリティ的には推奨されません)。
mysqldump -u myUser -pMyPassword myDatabase tableA tableB > my_table_backup.sql
3. ダンプファイルをデータベースにインポートする方法
ダンプファイルを別のデータベースにインポートするには、以下のようにmysql
コマンドを使います。
インポートコマンドの基本構成
mysql -u myUser -p targetDatabase < my_selected_tables_dump.sql
myUser
: MySQLにログインするユーザー名targetDatabase
: データをインポートするデータベースの名前my_selected_tables_dump.sql
: インポートするダンプファイル
例:
mysql -u sampleUser -p customerDB < backup_tables.sql
このコマンドは、backup_tables.sql
ファイルの内容をcustomerDB
データベースにインポートします。
補足情報:データの上書きに注意
インポート先のデータベースに同じ名前のテーブルが既に存在する場合、テーブルのデータが上書きされる可能性があります。必要に応じて、事前にデータベース全体のバックアップを取っておくことをお勧めします。
4. 大規模なデータのダンプとインポートを高速化する方法
データ量が大きい場合、ダンプやインポートの速度を改善する方法もいくつかあります。
-
インデックスを一時的に無効にする: インポート中にインデックスを無効にすると速度が向上します。
ALTER TABLE tableA DISABLE KEYS;
-
トランザクションを分割する: トランザクションを小さく分割することで、パフォーマンスが向上します。
まとめ
この記事では、MySQLのmysqldump
コマンドを使って特定のテーブルのみをダンプする方法と、そのデータをインポートする方法を解説しました。運用にあわせて、必要なデータだけを効率的にエクスポート・インポートすることで、データベース管理が一層スムーズになります。