WordPressサイトでリモートからMySQLの巨大ファイルをダウンロードしてきてローカルのMAMPにあるMySQLにインポートしてみた

ローカルで開発するのに運営しているWordPressのサイト(リモート)からデータベースファイルをインポートしようとしていました。で、ご存じのとおり、phpmyadminを使用するとリモートからエキスポートした巨大なsqlファイルはインポートできません。

Google先生にきいてみると、先人達の知恵を教えてくださり、下記のbigdumpというphpプログラムを使ってローカルのMySQLにアップロードを試みました。

目次

bigdumpをダウンロード

BigDump: Staggered MySQL Dump Importer

途中、こんなメッセージがでたものの

Note: The current mySQL connection charset is latin1. Your dump file must be encoded in latin1 in order to avoid problems with non-latin characters. You can change the connection charset using the $db_connection_charset variable in bigdump.php

無事にインストールができたのでほっとしたのもつかの間、データベースを確認するとしっかりと文字化けしておりました。原因は上記親切なメッセージのとおり、ローカルのMySQLの文字コードとリモートからエキスポートしたデータベースの文字コードの違いです。

この件についてもGoogle先生にきいてみると、対応方法を見つけることができました。

MySQLのcharsetをutf8に変更する

MySQLのcharsetをutf8に変更する方法

が、なぜかうまくいかない。my.cnfを設定して、/MAMP/db/mysql/ においたり、/MAMP/db/mysql/mysql/ においたりしても、なぜだかcharacter_set_databaseと character_set_serverはあいかわらずlatin1のまま。

この解決方法を見つけるべくさまよっていたのですが、なぜだかターミナルからMySQLにsqlをあげるsouceというコマンドを試してみました。最初に試したbigdumpと同じはずなので、どうせこちらでも文字化けしているのだろうとphpmyadminからデータベースを確認したところ、なんとこちらは文字化けなし。

なにがどうなんだかわからないけど、とりあえずダウンロードした巨大エキスポートファイルをローカルにインポートするという目的は達成できたので、手順を記録しておきます。

ターミナルでの操作

cd /Applications/MAMP/Library/bin

./mysql -u root -p

↑ これでMySQLを起動

mysql> CREATE DATABASE check_01;

データベースをつくって

mysql> show variables like “char%”;

文字コードを確認。当然、ここでもlatin1は表示されます。

mysql> use check_01;

データベースを選んで

mysql> source /Users/ユーザー名/Downloads/database001.sql;

エキスポートしたsqlファイルを選択。このとき、ファインダーからドラッグ&ドロップすると便利です。

しばらくまてば、データがインポートされます。

いずれにせよ、MAMPでのMySQLの文字コード問題は解決していないんだけど、とりあえず開発に戻ります。