みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

データのインポートの速度について

mysqlの1個のテーブル(約1万行)をphpMyAdminでエクスポートしました。エクスポートは一瞬で終わりました。
それを再びphpMyAdminからインポートしようとしたのですが、データが重いらしくタイムアウトのエラーが出てしまいました。
sqlファイルを開いてみると、テーブルへのinsert文が約200行ずつのかたまりごとに区切られてしました。
きっとphpMyAdminの方で、エクスポートする時、「これくらいのかたまりずつ区切っておかないと、スムーズにインポートできなくてエラーになっちゃうよ」と気を利かせて区切ってくれているのだろうと思います。
仕方ないので、sqlファイルを「約200行ずつのinsert文」に分割して、phpMyAdminからインポートしました。
全部で1万行ほどのデータなので、50回ほどその作業を繰り返しました。

エクスポートはスムーズだったので、インポートがこんなに手間がかかるとは思っていませんでした。
最初にその1万行のデータをテーブルに読み込ませたのは、別のcsvファイルを load data infile したり、項目の並び順を入れ替えて insert したりするphpファイルを書いたのですが、さほど重くもなくスムーズに処理できました。

phpMyAdminを使わない方法の方が圧倒的に早い気がするのですが、大きいデータをインポートする際のスムーズな方法がありましたら、アドバイスいただけますでしょうか?

投稿日時 - 2008-07-14 15:12:26

QNo.4175911

暇なときに回答ください

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

MySQL、phpMyAdminのそれぞれのバージョンを教えてください。

>それを再びphpMyAdminからインポートしようとした

データは、0件の状態でですか?

>sqlファイルを開いてみると、テーブルへのinsert文が約200行ずつのかたまりごとに区切られてしました。

「区切り」とは、具体的にどういう記述で区切られているのでしょうか?

load data文は、insertより効率的に行える機能です。
また、insert文を使う場合は、「isert into 表名 values(1行目の値リスト),(2行目の値リスト)」といった1回のinsert文で複数行を格納する方法が性能を出せることは実証されています。

投稿日時 - 2008-07-14 23:38:44

ANo.1

インポート用のSQL文を書いたファイルを用意していて、
コマンドラインからmysql -u ほげ -p <data.sqlなどとして
取り込むと効率がいいはずです

投稿日時 - 2008-07-14 15:16:26

あなたにオススメの質問