default charset が latin1 なテーブルの日本語データの移行作業(2)

phpmyAdmin で binary ダンプする方法もありそうだけど知らないし、そもそもこのサーバーで設定ファイルやソースをいじれるのかどうかもよくわからない。

別に phpmyAdmin でなくても、同じ処理が実行できるなら単独のスクリプトでも良い。もしかすると誰かがそういうスクリプトを書いているかもしれない。探してみると、次のページを発見:
http://snipplr.com/view/173/mysql-dump/

試してみると、それらしい SQL のファイルが出力された。が、そのファイルを移行先サーバーにインポートしようとすると、最後のほうで SQL エラーとなり完了できない。調べてみると、b2evolution の特定のテーブルでデータが正常にエクスポートできていないことが判明。ただし、途中までインポートできたデータは文字化けせずに正常に表示されることも同時に確認。エラーさえ解消できればこの方法でいけそうなので、上の PHP スクリプトに手を入れて不具合を直すことにした。

試行錯誤の末、データベース (MySQL) の中身を SQL 形式でダンプする PHP スクリプトができた。

保存した SQL ファイルをテキストエディタで開き、各テーブルの CREATE TABLE で DEFAULT CHARSET の値を latin1 から utf8 に変更。これで、移行後は本来の正しい文字セットのテーブルに日本語のコンテンツを格納できるようになるはず。

ファイルを保存後、移行先サーバーの phpmyAdmin でインポートしてみると・・・無事完了。どうにかギリギリでタイムリミットに間に合った。よかったよかった。