기초공부 - (5) 더미 데이터 넣기
2024. 2. 12. 00:40ㆍMySQL/Class
반응형
# 테스트를 하기 위해서 데이터를 임의로 넣어야하는 경우가 종종 있습니다. 많은 데이터를 필요로 할 때 손쉽게 더미 데이터를 넣을 수 있는 방법들을 알아보도록 하겠습니다.
# 테이블 생성
mysql> create table temp_dummy (a int, b varchar(10));
Query OK, 0 rows affected (0.03 sec)
1. 다른 데이터 이용한 데이터 생성
mysql> insert into temp_dummy
-> select @seq:=@seq+1, concat('test',@seq)
-> from temp_isolation,(select @seq:=0) as seq
-> ;
Query OK, 6 rows affected, 2 warnings (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 2
mysql> select * from temp_dummy;
+------+---------+
| a | b |
+------+---------+
| 1 | test1 |
| 2 | test2 |
| 3 | test3 |
| 4 | test4 |
| 5 | test5 |
| 6 | test6 |
+------+---------+
6 rows in set (0.00 sec)
2. loop 를 이용한 데이터 생성
mysql> delimiter $$
mysql> drop procedure if exists test.dummy $$
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> create procedure test.dummy()
-> begin
-> declare i int default 1;
-> while i <= 10 do
-> insert into test.temp_dummy values(i,concat('test',i));
-> set i = i + 1;
-> end while;
-> end $$
Query OK, 0 rows affected (0.01 sec)
mysql> delimiter ;
mysql> call test.dummy();
Query OK, 1 row affected (0.02 sec)
mysql> select * from test.temp_dummy;
+------+--------+
| a | b |
+------+--------+
| 1 | test1 |
| 2 | test2 |
| 3 | test3 |
| 4 | test4 |
| 5 | test5 |
| 6 | test6 |
| 7 | test7 |
| 8 | test8 |
| 9 | test9 |
| 10 | test10 |
+------+--------+
12 rows in set (0.00 sec)
- 여기서 조금 나아가, 내가 입력한 수만큼 데이터를 생성하는 스크립트로 해보는 것도 유용하게 사용할 수 있을 것 같습니다.
mysql> delimiter $$
mysql> drop procedure if exists test.cdummy $$
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> create procedure test.cdummy(IN cnt int)
-> begin
-> declare i int default 1;
-> while i <= cnt do
-> insert into test.temp_dummy values(i,concat('ctest',i));
-> set i = i + 1;
-> end while;
-> end $$
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> call test.cdummy(10);
Query OK, 1 row affected (0.01 sec)
mysql> select * from test.temp_dummy;
+------+---------+
| a | b |
+------+---------+
| 1 | ctest1 |
| 2 | ctest2 |
| 3 | ctest3 |
| 4 | ctest4 |
| 5 | ctest5 |
| 6 | ctest6 |
| 7 | ctest7 |
| 8 | ctest8 |
| 9 | ctest9 |
| 10 | ctest10 |
+------+---------+
10 rows in set (0.00 sec)
mysql> call test.cdummy(30);
Query OK, 1 row affected (0.02 sec)
mysql> select * from test.temp_dummy;
+------+---------+
| a | b |
+------+---------+
| 1 | ctest1 |
| 2 | ctest2 |
| 3 | ctest3 |
| 4 | ctest4 |
| 5 | ctest5 |
| 6 | ctest6 |
| 7 | ctest7 |
| 8 | ctest8 |
| 9 | ctest9 |
| 10 | ctest10 |
| 1 | ctest1 |
| 2 | ctest2 |
| 3 | ctest3 |
| 4 | ctest4 |
| 5 | ctest5 |
| 6 | ctest6 |
| 7 | ctest7 |
| 8 | ctest8 |
| 9 | ctest9 |
| 10 | ctest10 |
| 11 | ctest11 |
| 12 | ctest12 |
| 13 | ctest13 |
| 14 | ctest14 |
| 15 | ctest15 |
| 16 | ctest16 |
| 17 | ctest17 |
| 18 | ctest18 |
| 19 | ctest19 |
| 20 | ctest20 |
| 21 | ctest21 |
| 22 | ctest22 |
| 23 | ctest23 |
| 24 | ctest24 |
| 25 | ctest25 |
| 26 | ctest26 |
| 27 | ctest27 |
| 28 | ctest28 |
| 29 | ctest29 |
| 30 | ctest30 |
+------+---------+
40 rows in set (0.01 sec)
# 위 스크립트는 복사해서 사용하면 되지만 혹여 아래와 같이 syntax 에러가 발생되는 경우가 있습니다.
원인은 알 수 없으나 이럴경우 직접 타이핑하여 스크립트를 생성할 수 있습니다.
반응형
'MySQL > Class' 카테고리의 다른 글
기초공부 - (7) 매개변수 이름을 테이블명으로 사용한다면 (0) | 2024.02.21 |
---|---|
기초공부 - (6) limit & offset (0) | 2024.02.19 |
기초공부 - (4) isolation(고립,독립,격리) (0) | 2024.02.05 |
기초공부 - (3) sleep 세션 정리 하기(interactive_timeout, wait_timeout) (0) | 2024.01.30 |
기초공부 - (2) process & thread (0) | 2024.01.26 |