Генерация тестовых данных средствами MySQL

06.06.2010 16:48 / Артём Волк / 1142 просмотра / ...

Средства генерации тестовых данных встроены во многие утилиты для работы с БД, существует большое количество сторонних и даже он-лайн инструментов. Конечно, набор реальных тестовых данных ничто не заменит, но для случая «нагенерить чего-нибудь да по-больше» можно обойтись и встроенными возможностями MySQL.

Данные удобно вставлять в цикле, однако согласно официальной документации циклы можно использовать только внутри триггеров, хранимых процедур и пр.:

MySQL supports the IF, CASE, ITERATE, LEAVE, LOOP, WHILE, and REPEAT constructs for flow control within stored programs.

Хранимую процедуру можно сразу после использования удалить (способ генерации случайной строки взят из блога):

DELIMITER //

CREATE PROCEDURE `temp_sp` ()
BEGIN
	DECLARE i INT DEFAULT 1;
	WHILE i < 501 DO
		INSERT INTO `table`(
		`field1`,
		`field2`
		)
		VALUES(
			CONCAT('record#', i),
			CONCAT('random data: ', SUBSTRING(MD5(RAND()) FROM 1 FOR 6))				
		);
		SET i = i + 1;
	END WHILE;	
END//

DELIMITER ;

CALL temp_sp();
DROP PROCEDURE temp_sp;