重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

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

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

A 回答 (2件)

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



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

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

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

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

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

インポート用のSQL文を書いたファイルを用意していて、


コマンドラインからmysql -u ほげ -p <data.sqlなどとして
取り込むと効率がいいはずです
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す