ujisなダンプデータの変換に関してです。
nkfでドカンでも良かったんだけど、
$ nkf -E -w hoge.sql > hoge_utf8.sql
構文エラーになりやがったので、面倒だけど以下手順でutf8に変換しました。
変換用データベースを用意し、ujis環境にリストア
my.cnfを修正。
[ujis ~] $ sudo vi /etc/my.cnf
my.cnf
[mysql]
default-character-set=ujis <<<<<<<<<<<<<<< ここ
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set=ujis <<<<<<<<<<<<<<< ここ
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
MySQL再起動する。
[ujis ~] $ sudo /etc/init.d/mysqld restart
リストア。
#ダンプデータにCREATE文が無ければデータベースを作る。
[ujis ~] $ mysql -u root -e "CREATE DATABASE hoge;"
[ujis ~] $ mysql -u root [hoge] < hoge.sql
全テーブルの文字コードをUTF8に変換
[ujis ~] $ mysql -u root hoge -e "ALTER TABLE fuga CHARSET=utf8;"
[ujis ~] $ mysql -u root hoge -e "ALTER TABLE fugo CHARSET=utf8;"
・・・
ダンプ実行
[ujis ~] $ mysqldump -u root hoge --database > hoge_utf8.sql
ダンプデータのujis系をutf8系に置換
ujis → utf8
と ujis_bin → utf8_bin
を実行。
#確認
[ujis ~] $ grep "character set ujis\|collate ujis" hoge_utf8.sql
#問題無さそうならsedで置換、問題があればVimでコツコツ置換。
[ujis ~] $ sed -i -e 's/\(character set \|collate \)ujis/\1utf8/' hoge_utf8.sql
utf8環境のMySQLにリストア
[utf8 ~] $ mysql -u root < hoge_utf8.sql