MySQLでエクスポートとインポート

エンコーディングの設定

まずはDBのエンコーディングを修正。

試験管のなかのコード :: MySQL の文字エンコーディング関連設定
を参考に。

MySQLの設定ファイルは、Ubuntuであれば/etc/mysql/my.cnfにあるので
次の項目を追加する。

[mysql]
default-character-set=utf8

[mysqld]
default-character-set=utf8
character_set_server=utf8

サーバを再起動後、mysqlコマンドで変更を確認。

mysql> show VARIABLES LIKE 'character_set_%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       | 
| character_set_connection | utf8                       | 
| character_set_database   | utf8                       | 
| character_set_filesystem | binary                     | 
| character_set_results    | utf8                       | 
| character_set_server     | utf8                       | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

エクスポート (InnoDBの場合)

mysqldump (データベース名) -u (ユーザ名) -p --single-transaction --master-data=2 > (ダンプファイル)
  • -u: ユーザ名
  • -p: パスワード、続いてパスワード入力しなかった場合はプロンプトで聞かれる
  • --single-transaction: BEGINを発行してエクスポートする。InnoDB専用
  • --master-data: 1の場合CHANGE MASTER文をそのまま出力する、2の場合コメントにする

--master-dataの意味が理解できていないけど、CHANGE MASTER文を実行させないためのオプションとのこと。

インポート

mysql (データベース名) -u (ユーザ名) -p < (ダンプファイル)
  • -u: ユーザ名
  • -p: パスワード、続いてパスワード入力しなかった場合はプロンプトで聞かれる