phpMyAdminでインポートできない大きなファイルを一気にインポートできる「BigDump」

phpMyAdminでインポートできない大きなファイルを一気にインポートできる「BigDump」

Posted at April 4,2012 12:03 AM
Tag:[BigDump, MySQL, PHP, phpMyAdmin]

phpMyAdminを使ったSQLファイルのインポートにはファイルサイズの制限があり、サーバ環境によってはサイズの大きいSQLファイルをインポートできない場合があります。

これを解消してくれるのが「BigDump」です。

BigDump

BigDumpは、PHPベースのMySQLインポートツールです。

先日行ったサーバ移転で、100MBほどあるSQLファイルのインポートにこれを利用しました。約100MBほどあるSQLファイルを分割もせず、わずか1分ほどでインポートすることができました。

ということで以下、BigDumpによるSQLファイルのインポート手順を解説します。1つのSQLファイルサイズがかなり大きくても大丈夫なようですが、エクスポートするSQLファイルは7項の手順にしたがって出力したものを利用することを推奨します。

1.BigDumpのダウンロード

BigDumpのページの右にある「BigDump ver. 0.34b (beta) 」をクリック(バージョンは2012年4月現在)。

2.BigDumpの設定

ダウンロードしたアーカイブを展開し、中にあるbigdump.phpを任意のエディタで開き、データベースに接続するための以下の情報(赤色部分)を編集します。

// Database configuration
 
$db_server   = 'localhost';
$db_name     = '';
$db_username = '';
$db_password = ''; 

それぞれの設定内容は次のとおりです。

  • $db_server:データベースサーバ
  • $db_name:データベース名
  • $db_username:データベースユーザ名
  • $db_password:データベースパスワード

また、文字エンコーディングの設定もあります。

// Connection charset should be the same as the dump file charset (utf8, latin1, cp1251, koi8r etc.)
// See http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html for the full list
// Change this if you have problems with non-latin letters
 
$db_connection_charset = '';

UTF-8を設定する場合は次のようにします。

$db_connection_charset = 'utf8';

$db_connection_charsetの設定は不要と思いますが、6項のインポート実行でデータが文字化けした場合のみこの設定を行い、データベースを一旦削除・再作成して再実行するといいでしょう。

試してみたところ、さくらインターネットでは設定不要でしたが、ローカルPCのXAMPPのMySQLにインポートする場合は設定が必要でした。

上記以外の設定項目もいろいろあるようですが、編集は不要です。

3.BigDump用のディレクトリ作成とbigdump.phpのアップロード

FTPツール等で、ウェブサイトやブログを公開するサーバに「BigDump」などのディレクトリを作成します。ディレクトリはブラウザからアクセス可能な場所に作成してください。

そして作成したディレクトリに、2項で編集したbigdump.phpをアップロードします。

4.bigdump.phpの起動

ブラウザからbigdump.phpにアクセスします。データベースの設定が正しければ次のような画面が表示されます。

データベースの設定が正しくない場合は次のような表示になります。

正常に表示されない場合は、bigdump.phpに設定したデータベース情報の設定を見直してください。

5.SQLファイルのアップロード

FTPツール等を使って、phpMyAdminなどでエクスポートしたSQLファイルをbigdump.phpと同じディレクトリにアップロードします。

もし、SQLファイルのサイズがそれほど大きくなければ、bigdump.phpを使ったアップロードも可能です。

アップロードするには、4項で表示されているbigdump.phpのフォームからSQLファイルを選択し、「Upload」をクリックします。これでbigdump.phpと同じディレクトリにSQLファイルをアップロードします(この操作ではインポートは実行されません)。

ただしアップロード可能なファイルサイズは、サーバによって上限が異なります。上記のスクリーンショットはローカルPCのXAMPPの設定なので32MBになっています。さくらインターネットでは5MBでした。

FTPによるアップロード、またはbigdump.phpを使ったアップロード、いずれの場合も、アップロードしたファイルは次のように表示されます。

ここでは1ファイルのみですが、複数のSQLファイルをアップロードすればすべて表示されます。

6.インポート実行

※本手順を実行する前に7項までお読みください。

表示されたSQLファイルの一覧にある「Start Import」をクリックすれば、インポートを開始します。

インポート開始

次のように表示されればインポート完了です。実行ラインやクエリー数、バイト数などが表示されます。

インポート完了

以下の動画は当ブログのSQLファイルを実際にインポートしてみたものです。プログレスバーなどで進捗状況が分かるようになっています。

インポート完了後、画面下にある「Start from the beginning」をクリックして最初の画面に戻ります。このとき、絶対にブラウザの「戻る」で戻らないでください(インポートが再実行されます)。

最初の画面に戻る

一覧の右側にある「Delete file」をクリックすれば、サーバ上のSQLファイルを削除し、再実行を防ぎます(削除されないケースもあるようです。原因は不明)。

サーバ上のSQLファイルを削除

複数のSQLファイルをインポートする場合は、6項の手順を繰り返してください。

7.インポート時のエラーについて

「Start Import」を実行したあと、以下のエラーが発生する可能性があります。

インポートエラー

このエラーの原因は、1回にINSERTするときの行数が300行以上ある場合です。ファイルサイズの小さいSQLファイルでも、1つのINSERT文に300行以上の内容が含まれていると、このエラーが発生する可能性があります。

具体的には次のようなSQLファイルの場合です。

INSERT INTO `mt_tag` (`tag_id`, `tag_is_private`, `tag_n8d_id`, `tag_name`) VALUES
(1, 0, 7, 'Customize'),
(2, 0, 9, 'MovableType'),
(3, 0, 11, 'Profile'),
(4, 0, 13, 'Template'),
       :
 (300行以上)
       :
(1063, 0, 1062, 'WinMerge'),
(1064, 0, 0, 'persistentheaders'),
(1065, 0, 1064, 'PersistentHeaders');

このエラーを回避するには、phpMyAdminからエクスポートするときに、「作成するクエリの最大長」の値を変更します。さくらインターネットの場合、デフォルトで50000になっていたので、この値を5000などに変更してエクスポートします。これで1回のINSERT文が300行以内になりました。

インポートエラー

この値について、例えば10などを設定しても、1つのINSERT文に1レコードの情報が入らなくなるということはありません。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)