Yondata
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
반응형
profile

Yondata

@Yondata

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!