私は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を使用したので、これを覚えておいてください。