MySQL是目前最流行的關系型數據庫管理系統之一。在實際生產環境中,可能會遇到需要插入大量測試數據的情況,這時候如何快速插入一百萬條數據呢?
下面介紹兩種方法:
1. 使用腳本批量生成 INSERT 語句
SET autocommit=0; -- 關閉自動提交事務
START TRANSACTION; -- 開啟一個事務
-- 生成一百萬條數據的 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 ;
-- 執行存儲過程
CALL insertTestData();
-- 提交事務并打開自動提交
COMMIT;
SET autocommit=1;
2. 使用 LOAD DATA INFILE 命令導入數據
這種方法適用于數據已經存放在文件中的情況,可以使用腳本或其他方式將數據導出為 CSV 或者 txt 格式的文件。
-- 創建存放數據的表
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 導入數據
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE test_table
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
-- 檢查數據導入結果
SELECT COUNT(*) FROM test_table;
以上兩種方法都可以快速插入一百萬條測試數據,具體選擇哪種方法取決于數據來源和實際情況。