mysql 대량 데이터 넣기

greenTea·2023년 8월 13일
0

mysql 대량 데이터 넣기

😭개발을 하다보면 대량의 데이터가 필요할 수 있습니다.
이를 위한 방법에는 아래와 같은 방법들이 있습니다.

1. 2배 증가 쿼리 이용하기

🧐먼저 아래와 같이 테이블을 만들고 2개의 데이터를 넣겠습니다.

CREATE TABLE `member` (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT primary key,
    login_date DATETIME NOT NULL,
    login_id CHAR(100) NOT NULL,
    login_pw VARCHAR(100) NOT NULL,
    `user_name` CHAR(100) NOT NULL
);

INSERT INTO `member`
SET login_date = NOW(),
login_id = 'user1',
login_pw = 'user1',
`user_name` = '홍길동';

INSERT INTO `member`
SET login_date = NOW(),
login_id = 'user2',
login_pw = 'user2',
`user_name` = '홍길순';

select * from member;

🧐확인하면 2개의 데이터가 들어가 있는 것을 확인 할 수 있습니다.

다음 아래 쿼리를 여러번 실행해 줍니다.

INSERT INTO `member` (login_date, login_id, login_pw, `user_name`)
SELECT NOW(), UUID(), UUID(), concat('아무개-',floor(RAND()*100))
FROM `member`;

해당 쿼리를 수행하게 되면 기존 2개 -> 4개로 늘어나게 되는데 이후 쿼리를 실행할때마다 기존 * 2 만큼 데이터가 증가하게 됩니다.

여러번 쿼리를 수행하고 나서 count()를 통해 데이터가 얼마나 들어가는지 확인해보시면 됩니다.

2. recursive

😎위 테이블을 삭제하고 다시 테이블을 생성해주고 나서 아래의 쿼리를 실행해줍니다.

WITH RECURSIVE numbers_cte (n, login_date, login_id, login_pw, user_name) AS (
  SELECT 1, NOW(), UUID(), UUID(), concat('아무개-',floor(RAND()*100))
  UNION ALL
  SELECT n+1, NOW(), UUID(), UUID(), concat('아무개-',floor(RAND()*100))
  FROM numbers_cte
  WHERE n < 100
)
SELECT * FROM numbers_cte;

🫠recursive를 통해 100개의 데이터를 넣는 작업을 하게 되는데 위의 작업을 하게 되면 테이블에 값을 넣는게 임시로 테이블을 만들어서 보여주는 것이기에 데이터를 넣으려면 아래의 구문을 추가해주시면 됩니다.

insert into member  <--- 추가
WITH RECURSIVE numbers_cte (n, login_date, login_id, login_pw, user_name) AS (
  SELECT 1, NOW(), UUID(), UUID(), concat('아무개-',floor(RAND()*100))
  UNION ALL
  SELECT n+1, NOW(), UUID(), UUID(), concat('아무개-',floor(RAND()*100))
  FROM numbers_cte
  WHERE n < 1000
)
SELECT * FROM numbers_cte;

🫡insert intowith 구문 아래에 넣을 경우 에러가 나오기에 위의 추가해주시면 됩니다.

그러나 위 방법은 1000개가 넘어갈 경우 에러가 나오기에 만약 1000개가 넘는 데이터를 넣고 싶다면 설정파일에서 @@cte_max_recursion_depth의 값을 원하는 값으로 설정해주시면 됩니다.

위 방법외에 구글에서 찾아보니 프로시져를 통해서 하는 방법을 많이 사용하는 것 같습니다. 편하신 방법을 이용하시면 될 것 같습니다.

profile
greenTea입니다.

0개의 댓글