• 締切
  • 暇なときにでも

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

  • 質問No.4175911
  • 閲覧数683
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 0% (0/2)

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

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

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

回答 (全2件)

  • 回答No.2

ベストアンサー率 43% (833/1926)

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

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

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

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

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

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

ベストアンサー率 51% (3827/7415)

インポート用のSQL文を書いたファイルを用意していて、
コマンドラインからmysql -u ほげ -p <data.sqlなどとして
取り込むと効率がいいはずです
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ