大容量の CSV ファイルのインポート

Posted by muchag | phpMyAdmin | 2011-05-21 (土) 3:41:28

今日、125M 100,345行の CSV ファイルを
phpMyAdmin からインポートしようとしたら
タイムアウトを繰り返した。

何度も繰り返せばインポート自体は可能なようだが
その度に時間もかかるし、ダルい・・・。

【環境】
ローカル XAMPP
[XAMPP] 1.7.3
[MySQL サーバ] 5.1.41
[MySQL クライアント] 5.1.41
[phpMyAdmin] 3.2.4

で、調べてみたところ
インポート画面で
「CSV」
ではなく
「LOAD DATA する CSV」
を選択する手法を見つけた。

LOAD DATA INFILE ステートメントは高スピードでテキストファイルからテーブルに行を読み込みます。

MySQL 5.1 リファレンスマニュアル:8.2.6. LOAD DATA INFILE 構文

これは素敵そう♪

で、早速試してみたところ

1行しかインポートされなかった。

で、また調べたら
インポート用フォルダを利用する手法が載っていた。
Importing Structure and Data Using phpMyAdmin

XAMPP ディレクトリ\phpMyAdmin\config.inc.php

  1. $cfg['UploadDir']   = '';
  2. $cfg['UploadDir']   = './upload';

54行目を上のように修正。

XAMPP ディレクトリ\upload

を作成。

こうしてから、インポート画面にすると、先ほどまでとは異なり

ここから、ファイル名を選択した上で
「LOAD DATA する CSV」を選択したら
見事 10分くらいで 100,345行 をインポート完了。

めでたしめでたし。
 

余談:ディレクトリの指定失敗

この記事の為に SS を撮ろうと設定を元に戻したりしてあれこれやっていたら

上図のように

指定したアップロードディレクトリが利用できません

というエラーメッセージが出て慌てた。

phpMyAdmin のソースを辿ってみると
アップロードディレクトリが取れていないようだった。

  1. $cfg['UploadDir']   = './upload'; // OK
  2.  
  3. $cfg['UploadDir']   = 'upload'; // OK
  4.  
  5. $cfg['UploadDir']   = '/upload'; // NG

5行目のように記述していたのでエラーになっていた。

またくだらないミスを犯してしまった。
プログラミングの神様、ごめんなさい。

phpMyAdmin | 2011-05-21 (土) 3:41:28 |

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment