MySQL是最常用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一。在日常的使用中,我們會(huì)經(jīng)常進(jìn)行插入數(shù)據(jù)的操作,那么插入大量數(shù)據(jù)需要多長(zhǎng)時(shí)間呢?
例如我們有以下的一張表: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `age` int(11) NOT NULL, `gender` varchar(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 接下來(lái)我們?cè)谶@張表中插入一萬(wàn)條數(shù)據(jù): INSERT INTO `student` (`name`, `age`, `gender`) VALUES ('user1', 20, 'male'); INSERT INTO `student` (`name`, `age`, `gender`) VALUES ('user2', 21, 'female'); INSERT INTO `student` (`name`, `age`, `gender`) VALUES ('user3', 22, 'male'); ... 從上面的例子可以看出,如果要插入大量數(shù)據(jù),使用insert語(yǔ)句是非常耗時(shí)的。因此,我們可以使用LOAD DATA語(yǔ)句來(lái)一次性插入大量的數(shù)據(jù)。
下面是一個(gè)示例:
LOAD DATA LOCAL INFILE 'student.csv' INTO TABLE `student` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
上面的語(yǔ)句假設(shè)我們的數(shù)據(jù)保存在一個(gè)名為student.csv的文件中,并且每行數(shù)據(jù)用逗號(hào)分隔,每條數(shù)據(jù)占用一行。在這個(gè)語(yǔ)句中,IGNORE 1 ROWS表示忽略CSV文件的第一行,因?yàn)榈谝恍型ǔJ菢?biāo)題行。
總之,在插入大量數(shù)據(jù)時(shí),使用LOAD DATA語(yǔ)句可以大大提高插入數(shù)據(jù)的速度。