SQL Procdure를 이용한 Dummy 데이터 생성

안녕하세요. 이번 글에서는 SQL 프로시저를 이용한 Dummy 데이터 생성 하는 방법에 대해서 알아보겠습니다.

프로시저(Procedure) ???

우선 프로시저(Procedure)에 대해 간략하게 말해 본다면, 특정의 SQL 문들을 함수처럼 사용할 수 있는 집합 이라고 할 수 있습니다. 어떤 특정 명령들을 SQL 안에 넣어둔 것이죠. 어떻게 보면 함수와 프로시저는 같은 것이라 볼 수 있지만 return 값 유무 및 갯수, 실행속도, 호출방법 등의 차이가 있습니다.

프로시저(Procedure)의 장점 ???

그렇다면 이 프로시저를 사용할 때의 장점들은 무엇이 있을까요?

  • 반복적인 작업을 피함
  • 최적화 및 캐쉬 및 트래픽 감소
  • SQL 내 프로시저 생성 -> 개발언어에 비의존적, 다소 간편한 유지보수

등등이 있습니다. 프로시저의 자세한 내용에 대해서는 다음을 기약하여 자세히 알아보도록 하겠습니다.

Dummy 데이터 생성

다시 본론으로 넘어와서 쉘 스크립트 내에서 프로시저를 이용하여 Dummy Data를 생성하여 보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash

# 아이디와 비밀번호 입력받아 넣어 줌
echo -n "DB ID : "
read ID
echo -n "DB PW : "
read PW

echo " "
echo "====================================="
echo "Input Account : ${ID} | $PW"
echo "====================================="
echo " "

echo $1 "Insert Dummy data..."
echo $2 "count"

mysql moca -u $ID --password=$PW<<EOFMYSQL

# 기존 프로시저가 있다면 삭제
DELIMITER $$
DROP PROCEDURE IF EXISTS loopInsert $$

# 프로시저 생성
CREATE PROCEDURE loopInsert()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i<=$2 DO
INSERT INTO dummy_log(p_idx, create_time, content) VALUES($1, now(), concat('DUMMY_DATA_',i));
SET i=i+1;
END WHILE;
END $$
DELIMITER $$

# 생성 프로시저 콜
CALL loopInsert();

EOFMYSQL

쉘스크립트 실행

해당 스크립트를 실행 합니다.

1
2
    # (파일명) '(특정ID)' (갯수) 
./procedure.sh '201908' 3

결과

이상으로 간략한 프로시저의 개념과 Dummy 데이터 생성하는 법에 대해서 알아보았습니다.