본문 바로가기

   
Programming/MySQL

MariaDB for문 프로시저 만들기 + 원하는 갯수만큼 인서트 되도록

반응형

MariaDB for 문 프로시저 만들기 + 원하는 개수만큼 인서트되도록

개인적으로 테스트 용도로 MariaDB를 사용해 보고 있는데 테스트 용도나 디버깅을 위해 임시 데이터를 테이블에 인서트 해야 하는 경우가 종종 생기는 것 같습니다. 프로그래밍 언어 DB 연결 및 제어문을 활용해 테스트 데이터를 넣어도 되지만 DB가 연결되어 있다면 SQL Query문 반복을 활용해 데이터를 넣는 게 더 간편한 것 같습니다.

 

프로시져만 작성하려고 했으나 데이터베이스, 테이블, 프로시져까지 생성하는 구문을 간단히 정리해 봤습니다. 제대로 규칙을 지키지 않고 작성한 쿼리문을 실행하게 되면 에러 문구가 애매하게 표시되는 부분이 있어 어디가 문제인지 찾느라 시간을 조금 허비한 기억에 개인적으로 이후에 활용할 목적도 있습니다.

CREATE DATABASE good; /*good DB 생성*/
/*_______________________________________________________________________________*/

USE good; /* good DB 선택*/
/*_______________________________________________________________________________*/

CREATE TABLE test( /*테스트용 테이블 생성*/
	no INT NOT NULL AUTO_INCREMENT,
	name VARCHAR(20),
	email VARCHAR(40),
	pass VARCHAR(30),
	content TEXT,
	date DATETIME,
	PRIMARY KEY(NO)
);
/*_______________________________________________________________________________*/

DELIMITER ;; /* 프로시저 만들기 위한 구분문자 DELIMITER 사이에 공백 지우면 에러남 */
CREATE PROCEDURE auto_insert(IN count INT) /*auto_insert 이름의 프로시저 생성 호출시 들어오는 숫자를 count 변수에 저장*/
BEGIN
    DECLARE i INT DEFAULT 1;/* 변수 I에 1 초기화 */
    WHILE (i <= count) DO/*1부터 호출시 입력한 숫자만큼 반복*/
		  INSERT INTO test (name, email, pass, content, date)VALUES(CONCAT('자동생성' ,i) , CONCAT('auto', i, '@mail.com'), '12345', CONCAT('자동생성 데이타 입니다.', i), NOW()); /* INSERT 실행 CONCAT 함수는 문자를 합치기 위해 사용*/
        SET i = i + 1; /* 루프가 끝나기전 I변수 1증가 */
    END WHILE; /* 반복  */
END;;
DELIMITER ; /* 프로시저 종료 지점 마찬가지로 DELIMITER 사이 공백 지우면 에러남.*/
/*_______________________________________________________________________________*/

CALL auto_insert(1121); /* 1121개 데이터  인서트 해봐~ */
/*_______________________________________________________________________________*/

SELECT * FROM test; /* 데이타 잘들어갔는지 확인.*/
/*_______________________________________________________________________________*/

DROP PROCEDURE auto_insert; /*  INSERT 된거 확인 했고 필요 없으니 프로시저  삭제~ */
/*_______________________________________________________________________________*/

 

결과화면.


 

임시로 테스트 데이터를 넣으려는 분 중 쿼리 반복문에 익숙하지 않으신 분들은 참고하시면 좋을 것 같습니다.

반응형