mysql phpmyadmin エクスポート・インポート時にデータで全て入らない場合の対処法

サーバー引っ越し等で新規データベースを作り、そこにテーブルをインポートする際、全てのレコード(データ)が入らない事が起こった。
原因は、phpMyAdminでインポートする際、「ドラックアンドドロップ」でsqlファイルを転送した事でした。

 

ドラックアンドドロップでファイルをアップロードすると、「成功」という文字が出ます。しかし、実際は全てのデータが入っておらず、タイムアウトの関係?でエラーになっていました。
画面上部に「インポート」というタグが出ていると思うので、そこから「ファイルを選択」でアップロードするとエラーになるはずです。

原因は、容量が大きすぎる事。

容量を小さくする為の方法

  • エクスポートする際に、「詳細設定」からテーブルの選択が可能です。エクスポートするテーブルの数を減らす。
  • 「詳細設定」からgzip(gz)で圧縮する。
  • 上記でもエラーになる場合、エクスポートするテーブルを選択した状態で、「エクスポート」タブを押すと、「詳細設定」でエクスポートするレコードの数を選択できます。そこで、行数:1000、開始行0。のようにしてエクスポート・インポートを繰り返す。
    データベースを見れば、テーブルのサイズが出ている。私は、「MiD」の単位の物は、そのテーブルだけでインポートしてみて、入らずエラーが出る場合は細かく入れていく。レコードの行数というよりも、そのレコードのサイズが大きく関係するので5000行ずつ入れる場合もあれば、500行ずつでないと入らない場合もあった。地道に、入れていくしかないと思う。尚、一度、タイムアウトした場合は、REPLACE文で入れる事を忘れないように。INSERT分では入らないし、UPDATEでは既にインポート済みの行数を気にしなければならないので面倒。ただ、REPLACE文は、INSERTとUPDATE文を組み合わせて処理しているようなので、時間が掛かってしまうのでその分行数を減らして処理する事を忘れずに。