728x90
반응형
첫번째 샘플
CREATE PROCEDURE InsertRandomCompData(IN num_rows INT)
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE name_list JSON;
DECLARE name_count INT;
DECLARE random_name VARCHAR(200);
DECLARE random_age INT;
DECLARE random_phone VARCHAR(200);
DECLARE random_etc VARCHAR(200);
-- 테이블이 없는 경우 생성
CREATE TABLE IF NOT EXISTS `COMP_DATA` (
`COMP_NM` varchar(200) DEFAULT NULL,
`COMP_AG` int(11) DEFAULT NULL,
`COMP_PHON` varchar(200) DEFAULT NULL,
`ETC` varchar(200) DEFAULT NULL
) ;
-- 이름을 위한 랜덤한 배열 정의
SET name_list = JSON_ARRAY('John', 'Jane', 'Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank',
'Grace', 'Hannah', 'Ivy', 'Jack', 'Kate', 'Leo', 'Mia', 'Nina',
'Olivia', 'Paul', 'Quinn', 'Rachel', 'Sam', 'Tom', 'Uma', 'Victor',
'Wendy', 'Xander', 'Yara', 'Zach', 'Liam', 'Emma', 'Noah', 'Sophia',
'James', 'Isabella', 'Benjamin', 'Ava', 'Lucas', 'Charlotte', 'Elijah',
'Amelia', 'Logan', 'Harper', 'Jacob', 'Evelyn', 'William', 'Abigail');
-- 이름 배열의 길이를 계산
SET name_count = JSON_LENGTH(name_list);
-- 루프를 통해 num_rows 만큼 데이터 삽입
WHILE i < num_rows DO
-- 이름 랜덤 선택 (JSON 배열에서 랜덤하게 이름 선택)
SET random_name = JSON_UNQUOTE(JSON_EXTRACT(name_list, CONCAT('$[', FLOOR(RAND() * name_count), ']')));
-- 나이 랜덤 생성 (20 ~ 60세)
SET random_age = FLOOR(20 + RAND() * 41);
-- 핸드폰 번호 랜덤 생성 (010-XXXX-XXXX 형식)
SET random_phone = CONCAT('010-', LPAD(FLOOR(RAND() * 10000), 4, '0'), '-', LPAD(FLOOR(RAND() * 10000), 4, '0'));
-- ETC 컬럼에 랜덤 문자 삽입
SET random_etc = CONCAT('Note ', FLOOR(1 + RAND() * 100));
-- 테이블에 삽입
INSERT INTO COMP_DATA (COMP_NM, COMP_AG, COMP_PHON, ETC)
VALUES (random_name, random_age, random_phone, random_etc);
-- 카운터 증가
SET i = i + 1;
END WHILE;
END
랜덤 사람명 데이터 COMP_NM,
랜덤 나이 데이터 COMP_AG ,
랜덤 핸드폰번호 데이터 COMP_PHON,
랜덤 문자 데이터 ETC
실행 방법
CALL InsertRandomCompData(1000);
두번째 샘플
CREATE PROCEDURE CREATE_RANDOM_DATA(IN p_count INT)
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE v_name VARCHAR(100);
DECLARE v_first_names VARCHAR(500) DEFAULT '김,이,박,최,정,강,조,윤,장,임,한,오,서,신,권,황,안,송,류,전,양,손,배,조,백,허,유,남,심,노,하,곽,성,차,주,우,구,신,임,나,전,민,유,진,지,엄,채,원,천,방,공';
DECLARE v_last_names VARCHAR(1000) DEFAULT '준영,민서,서준,지우,현우,준호,서진,민준,주원,시우,도현,지훈,성민,준혁,승우,성현,현준,현진,승민,선우,지민,수진,예진,윤서,지은,민지,수빈,예은,서연,유진,지현,민서,서영,서윤,다은,예린,수민,수현,혜원,예원,지원,지안,은서,민주,은지,다인,하은,예진,지우,채원,연서,은주,유나,채은,은채,민아,동현,태민,현수,동준,태준,승준,은우,민재,도윤,시현,준서,하준,윤호,민호,도훈,지성,상현,승현,태영,현우,태원,재민,재현';
-- 테이블이 없는 경우 생성
CREATE TABLE IF NOT EXISTS RANDOM_PERSON (
ID INT AUTO_INCREMENT PRIMARY KEY,
COMP_NM VARCHAR(100),
COMP_AG INT,
COMP_PHON VARCHAR(20),
ETC VARCHAR(100),
CREATE_DT TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 랜덤 데이터 생성
WHILE i < p_count DO
-- 랜덤 이름 생성
SET v_name = (
SELECT CONCAT(
SUBSTRING_INDEX(SUBSTRING_INDEX(v_first_names, ',', FLOOR(1 + RAND() * 50)), ',', -1),
SUBSTRING_INDEX(SUBSTRING_INDEX(v_last_names, ',', FLOOR(1 + RAND() * 80)), ',', -1)
)
);
-- 데이터 삽입
INSERT INTO RANDOM_PERSON (COMP_NM, COMP_AG, COMP_PHON, ETC)
VALUES (
v_name, -- 이름
FLOOR(20 + RAND() * 61), -- 20-80세 사이 나이
CONCAT('010',
LPAD(FLOOR(RAND() * 9999), 4, '0'),
LPAD(FLOOR(RAND() * 9999), 4, '0')
), -- 전화번호
CONCAT('비고_', FLOOR(RAND() * 1000)) -- 랜덤 비고
);
SET i = i + 1;
END WHILE;
-- 생성된 데이터 확인
SELECT * FROM RANDOM_PERSON ORDER BY ID DESC LIMIT 10;
END;
실행 방법
CALL CREATE_RANDOM_DATA(100);
728x90
반응형
'Database' 카테고리의 다른 글
[MYSQL] Mysql 모든 컬럼 데이터 샘플 데이터 (0) | 2024.10.22 |
---|---|
[Postgresql] 포스트그레스 사용 가능한 모든 컬럼 데이터 (0) | 2024.10.22 |
Teradata Database 구축 (0) | 2023.11.09 |
[PostgreSQL]Connection Pool 조회 session 정리 (2) | 2023.10.13 |
[oracle] 오라클 기동,중지,셧다운,재시작,리스너확인 (0) | 2023.05.19 |