2016-10-25 6 views
0

私はmysql内のテーブルにロードしたい約60mの行を持つ20gigのサイズのcsvファイルを持っています。効率的にcsvファイルをmysqlにロードします

ロードを開始する前に、複合プライマリキー(col_a, col_b)でテーブルを定義しました。

私は以下のように私のロードを開始した:

LOAD DATA LOCAL INFILE '/mypath/mycsv.csv' 
INTO TABLE mytable 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
IGNORE 0 LINES 
(@v1v, @v2v, @v3v, @v4v, @v5v, etc...) 
SET 
col_a = nullif(@v1v,''), 
col_b = nullif(@v2v,''), 
col_c = nullif(@v3v,''), 
col_d = nullif(@v4v,''), 
col_e = nullif(@v5v,''), 
etc..., 
load_dttm = NOW(); 

これは、データセットのサイズは10グラムの周りに到着するまで、正常に動作するように見えたの負荷が大幅に鈍化し、その時点で、とそれがかもしれないように見えました一晩を過ごしているし、はるかに大きくなっていない。

(この単語の定義に応じて)「大」csvをmysqlにロードする方が効率的ですか?

私の即時の思考は以下のとおりです。

1)私は複合主キーを削除し、そして唯一の負荷 2)私は、私はそれを理解したよう小さな塊

にcsvファイルを打破すべき後にそれを適用する必要がありますmysqlは主にシステムの制約によって制限されています。これは私の場合は問題ではありません。Linux Red Hatサーバーで "MemTotal:396779348 kB"を使用しています。とテラバイトのスペース。

これは私が初めてmysqlを使用したので、これを覚えておいてください。

答えて

0

私の問題は、/ var/lib/mysqlディレクトリに十分なスペースが割り当てられていなかったためです。 load dataコマンドを処理しているときに、スペースが少なくなったときにmysqlがエラーをスローするのではなく、遅くなるようです。これを解決するために、私はデータディアを使用して移動しましたHow to change MySQL data directory?

関連する問題