- 締切済み
データのインポートの速度について
mysqlの1個のテーブル(約1万行)をphpMyAdminでエクスポートしました。エクスポートは一瞬で終わりました。 それを再びphpMyAdminからインポートしようとしたのですが、データが重いらしくタイムアウトのエラーが出てしまいました。 sqlファイルを開いてみると、テーブルへのinsert文が約200行ずつのかたまりごとに区切られてしました。 きっとphpMyAdminの方で、エクスポートする時、「これくらいのかたまりずつ区切っておかないと、スムーズにインポートできなくてエラーになっちゃうよ」と気を利かせて区切ってくれているのだろうと思います。 仕方ないので、sqlファイルを「約200行ずつのinsert文」に分割して、phpMyAdminからインポートしました。 全部で1万行ほどのデータなので、50回ほどその作業を繰り返しました。 エクスポートはスムーズだったので、インポートがこんなに手間がかかるとは思っていませんでした。 最初にその1万行のデータをテーブルに読み込ませたのは、別のcsvファイルを load data infile したり、項目の並び順を入れ替えて insert したりするphpファイルを書いたのですが、さほど重くもなくスムーズに処理できました。 phpMyAdminを使わない方法の方が圧倒的に早い気がするのですが、大きいデータをインポートする際のスムーズな方法がありましたら、アドバイスいただけますでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- chukenkenkou
- ベストアンサー率43% (833/1926)
MySQL、phpMyAdminのそれぞれのバージョンを教えてください。 >それを再びphpMyAdminからインポートしようとした データは、0件の状態でですか? >sqlファイルを開いてみると、テーブルへのinsert文が約200行ずつのかたまりごとに区切られてしました。 「区切り」とは、具体的にどういう記述で区切られているのでしょうか? load data文は、insertより効率的に行える機能です。 また、insert文を使う場合は、「isert into 表名 values(1行目の値リスト),(2行目の値リスト)」といった1回のinsert文で複数行を格納する方法が性能を出せることは実証されています。
- yambejp
- ベストアンサー率51% (3827/7415)
インポート用のSQL文を書いたファイルを用意していて、 コマンドラインからmysql -u ほげ -p <data.sqlなどとして 取り込むと効率がいいはずです