3

毎日、以下を使用して約 6 GB の CSV ファイルを MySQL にロードします。

LOAD DATA LOCAL INFILE 'file$i.csv' INTO TABLE tableName FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';

このプロセスを通過するファイルが 6 つあるため、時間がかかります。これらのファイルを自分で生成するため、出力される形式を制御できます。

当初、CSV を選択したのは、これがより小規模なプロセスであり、データを移動して非開発者が簡単に読み取れるようにする必要があったためです。ただし、ロード時間が非常に劇的であるため、それほど問題ではありません。

各行をINSERTクエリとして単一のファイルに出力して実行する方が速いですか、それとも CSV の方が速いですか?

InnoDB ストレージ エンジンを使用しています。

4

1 に答える 1

0

MyISAM テーブルを使用している場合は、ALTER TABLE table_name DISABLE KEYS; を試してください。データをロードする前に ALTER TABLE table_name ENABLE KEYS; データのインポートが完了した後。これにより、膨大なデータにかかる時間が大幅に短縮されます。

データのロードは、行ごとに個別の挿入ステートメントよりも高速です。

于 2013-09-19T12:27:12.250 に答える