TopMySQL > 2012年4月
2012年4月 4日

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

April 4,2012 12:03 AM
Tag:[, , , ]
Permalink

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レコードの情報が入らなくなるということはありません。

Comments [0] | Trackbacks [0]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2021年
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3