大きなサイズのデータをMySQLにインポートする方法
大きなサイズのデータをphpMyAdminでMySQLにインポートしようとすると、エラーが出て止まってしまう場合があります。そんな場合にphp.iniを変更せずに大きなデータをインポートする方法を説明します。私も別のブログで10万件くらいのデータを更新する時に使っている方法です。
BigDumpでインポート可能
大きなサイズのデータをphpMyAdminでインポートするとエラーが出るのは、最大インポートサイズまたは最大処理時間をオーバーしたことが原因です。
php.iniの設定でこれらの値を大きくすればエラーを回避することができます。しかし多くのレンタルサーバーではphp.iniの設定を変更することができません。
そんな場合に便利なのがBigDumpというフリーのツールです。大きなデータでもBigDumpを使えばすんなりとMySQLにインポートすることができます。php.iniをいじる必要もありません。
実際に、私が運用する別サイトで約10万件のデータ更新に使っていて、とても重宝しています。
BigDumpについてもう少し
海外の方(たぶんドイツ人)が善意で作ったphpのファイルです。
仕組みは、大きなデータを細かいデータに分割して少しづつインポートするというもの。データ分割やインポートはBigDumpが全て自動で行ってくれます。
最新バージョンが2015年と少し古いですが、現在でも私は問題なく使っています。
また、海外の口コミサイト「HOTSCRIPTS」に使った人の声がたくさんあります。ほぼすべての口コミが高評価です。→https://www.hotscripts.com/listing/bigdump/
以下では、そのBigDumpを使って大きなサイズのデータをMySQLにインポートする手順を説明します。
大きなデータをインポートする手順
では、BigDumpを使って大きなデータをMySQLにインポートする手順を説明します。
インポートするデータを準備
事前にインポートするデータを準備しておきます。
インポートするデータをsql形式のファイルで作成してください。1テーブル分のみのsqlでも、複数のテーブル分が1ファイルになったsqlでも構いません。
補足
BigDumpでインポートできるデータ形式は.sqlです。csvファイルはサポートしていないので、csvファイルをインポートしたい場合は事前にsqlファイルへ変換してください。
BigDumpをダウンロード
続いてBigDumpを入手します。
BigDumpの公式サイト(https://www.ozerov.de/bigdump/)に行き、右の方にある「Download spript」からzipファイルをダウンロード。
↑ちょっと独特のデザインで抵抗を感じるかもしれませんが、書かれている内容は誠実です。作者はマジメな方なんだろうなと思います。
zipを解凍
ダウンロードしたzipファイルを解凍します。解凍するとbigdump.phpが現れます。
どんなプログラムなのか気になる方は使う前にこのphpのコードを確認すると良いと思います。私がざっと確認した範囲ではおかしな処理は組み込まれていませんでした。
bigdump.phpに設定を記入
bigdump.phpファイル内に自分のDBに関する情報を記入します。
bigdump.phpをテキストエディタで開き、$db_server
、$db_name
、$db_username
、$db_password
と書かれている箇所をさがしてください。そこにインポート先のMySQLの情報入力します。
↑上図の4か所の「your~」のところに記入します
DBの情報はどこで調べるの?
お使いのレンタルサーバー会社のサイトでログイン後に、「データベース情報」などのメニューからこれらの情報が調べられると思います。
サーバーに一時フォルダを作成
インポート作業に使う一時フォルダをサーバーに作成します。
サーバーの公開フォルダにフォルダを新規作成します(フォルダ名は任意です。ここでは「bigdump」フォルダとします)。その中に「bigdump.php」と「インポートしたいsqlファイル」を保存します。
この一時フォルダは、インポートが終了したら削除します。
ブラウザで開く
サーバーに保存したbigdump.phpをChromeなどブラウザで表示します。
ブラウザでhttps://〇〇〇.com/□□□□/bigdump.php
を表示してください(□□□□は先ほど作成した一時フォルダ名)。
↑ブラウザに上記のようなページが表示されます。先ほど一時フォルダに保存したsqlファイルが書かれていることを確認してください。
補足
一時フォルダを作成した階層によってURLは異なります。フォルダの階層に応じてURLは適宜変更ください。
インポートを開始する
MySQLにデータをインポートします。
「Start import」の青文字をクリックするとデータのインポートが始まります。しばらく何もせずに待ってください。
↑インポートがある程度進むと上記の画面に切り替わります。青色のプログレスバーで進捗が分かります。
インポート完了
下記のようにグリーンのメッセージが表示されたらインポート完了です。
ちゃんとインポートできているかphpMyAdminなどで確認してください。
一時フォルダを削除
一時フォルダを削除します。
上記で作成した一時フォルダをサーバーから削除してください。(フォルダ内のbigdump.phpとsqlファイルも削除してください)
重要
削除し忘れると、誰でもアクセスできてしまうのでデータの改ざんなどの恐れがあります。必ず削除してください。
以上で手順は完了です。
はじめはややこしく感じるかもしれませんが、慣れてしまえば単純作業ですよ。
はじめまして!サーバ移転でDBの引っ越しを予定していたのですが、ダンプファイル(SQL)が48MBとphpMyAdminでインポートできないサイズで、いろいろググってこちらにたどり着きました。
いざ、BigDumpを稼働させると下記エラーが。。。
Error at the line 12: ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
BigDumpのGitも読んで、エンコードの記述箇所を見直してみたのですが、同じエラーが表示され、撃墜されているところです。
もっと、基本的な勉強からしなくてはならないようです。
demiさんへ
コメントありがとうございます。
Error at the line 12はsqlファイルの12行目のことです。sqlファイルをテキストエディタ等で開いて12行目におかしなデータがないかチェックしてみると原因がわかるかもしれません。11行目まではエラーになっていないので1~11行目までと12行目を比べると何が引っかかっているかわかる場合もあります。
チェックしてもよくわからなければ12行目を丸ごと削除すると読み込める場合もあります(その場合は12行目は手入力等で別途追加する)。
私にできるアドバイスはこれくらいです。うまくいくといいですね、ファイト!