기초공부 - (5) 더미 데이터 넣기

2024. 2. 12. 00:40MySQL/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 에러가 발생되는 경우가 있습니다.

원인은 알 수 없으나 이럴경우 직접 타이핑하여 스크립트를 생성할 수 있습니다.

알 수 없는 syntax에러가 발생하였습니다.

반응형