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: パスワード、続いてパスワード入力しなかった場合はプロンプトで聞かれる