LOAD DATA INFILE

メモ、速いらしいということで。

CREATE TABLE testdata (
 id   int NOT NULL,
    email  varchar(255) NOT NULL,
    username varchar(255) NOT NULL,
    value1  varchar(100),
    value2  int NOT NULL,
    value3  int NOT NULL,
    value4  int NOT NULL,
    PRIMARY KEY (id)
) ENGINE=InnoDB;

スキーマこれで、

|  1 | test1@example.com  | user1    |        |      1 |      1 |      1 |
|  2 | test2@example.com  | user2    |        |      2 |      2 |      2 |

こんな感じのデータで400MBぐらいのCSVファイルを取り込み、

mysql> load data infile 'C:\\Users\\okano\\test.csv' into table testdata fields terminated by ',';
Query OK, 6000000 rows affected (2 min 45.26 sec)
Records: 6000000  Deleted: 0  Skipped: 0  Warnings: 0

Pentium4 3.4GHz, メモリ 2GB, WindowsVista MySQL5.1.48

追記

  • PKはインデックス作られるので外しとくべきとアドバイスもろた