The fastest way to load data from file is LOAD DATA INFILE
. Try it this way
LOAD DATA LOCAL INFILE '/path/to/your/file.csv'
IGNORE -- use this if you have duplicate numbers in the file and UNIQUE constraint defined on `number` column
INTO TABLE table1
FIELDS TERMINATED BY ','
LINES TERMINATED BY ','
(number)
Let's try it
mysql> CREATE TABLE Table1 -> ( -> `id` int not null auto_increment primary key, -> `number` int, -> `status` varchar(32) -> ); Query OK, 0 rows affected (0.13 sec) mysql> mysql> LOAD DATA LOCAL INFILE '/tmp/test.csv' -> INTO TABLE table1 -> FIELDS TERMINATED BY ',' -> LINES TERMINATED BY ',' -> (number); Query OK, 6 rows affected (0.00 sec) Records: 6 Deleted: 0 Skipped: 0 Warnings: 0 mysql> select * from table1; +----+--------+--------+ | id | number | status | +----+--------+--------+ | 1 | 234546 | NULL | | 2 | 345674 | NULL | | 3 | 464368 | NULL | | 4 | 563236 | NULL | | 5 | 684269 | NULL | | 6 | 707853 | NULL | +----+--------+--------+ 6 rows in set (0.00 sec)
UPDATE: If you need to do some basic transformations or validations you can use SET
clause along with user variables
LOAD DATA LOCAL INFILE '/path/to/your/file.csv'
IGNORE INTO TABLE table1
FIELDS TERMINATED BY ','
LINES TERMINATED BY ','
(@number)
SET number = CONCAT('prefix', @number)