MySQL是目前最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一。在實(shí)際生產(chǎn)環(huán)境中,可能會遇到需要插入大量測試數(shù)據(jù)的情況,這時候如何快速插入一百萬條數(shù)據(jù)呢?
下面介紹兩種方法:
1. 使用腳本批量生成 INSERT 語句
SET autocommit=0; -- 關(guān)閉自動提交事務(wù)
START TRANSACTION; -- 開啟一個事務(wù)
-- 生成一百萬條數(shù)據(jù)的 SQL 語句
DELIMITER ;;
CREATE PROCEDURE insertTestData()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i<= 1000000 DO
INSERT INTO test_table (name, age) VALUES (CONCAT('姓名', i), i);
SET i = i + 1;
END WHILE;
END;;
delimiter ;
-- 執(zhí)行存儲過程
CALL insertTestData();
-- 提交事務(wù)并打開自動提交
COMMIT;
SET autocommit=1;
2. 使用 LOAD DATA INFILE 命令導(dǎo)入數(shù)據(jù)
這種方法適用于數(shù)據(jù)已經(jīng)存放在文件中的情況,可以使用腳本或其他方式將數(shù)據(jù)導(dǎo)出為 CSV 或者 txt 格式的文件。
-- 創(chuàng)建存放數(shù)據(jù)的表
CREATE TABLE `test_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT '',
`age` int(11) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='測試表';
-- 使用 LOAD DATA INFILE 導(dǎo)入數(shù)據(jù)
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE test_table
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
-- 檢查數(shù)據(jù)導(dǎo)入結(jié)果
SELECT COUNT(*) FROM test_table;
以上兩種方法都可以快速插入一百萬條測試數(shù)據(jù),具體選擇哪種方法取決于數(shù)據(jù)來源和實(shí)際情況。