PostgreSQL에서 테스트를 위해 무작위 데이터를 삽입하는 방법은 무엇입니까?

10개의 행만 있으면 성능을 탐색할 수 없기 때문에 데이터베이스 및 쿼리의 성능을 테스트하기 위해 수십만 또는 수백만 개의 행이 필요한 경우가 있으므로 성능을 가지고 놀기 전에 일부 테스트 데이터를 만들어야 합니다.

그러나 우리는 쉘 스크립트나 (당신이 가장 좋아하는 언어) 스크립트를 사용할 수 없습니다. 예, 스크립트로 1M 행을 생성한 다음 데이터베이스에 저장하려고 시도할 수 있지만 스크립트 메모리는 메모리에서 1M 행을 사용할 수 없습니다. 스트림을 만들거나 데이터 청크를 생성한 다음 데이터베이스 또는 CSV 파일에 저장한 다음 데이터베이스로 가져와야 하지만 PostgreSQL의 놀라운 기능이 도움이 되는 동안 왜 그렇게 해야 할까요?

repeat() 함수



두 개의 매개변수repeat(string to repeat, number of times to repeat)를 사용하여 문자열을 반복하는 함수입니다.

예시:

INSERT INTO test (stringColumn) VALUES (repeat("Wow ", 3));


그러면 값이 Wow Wow Wow인 stringColumn이 있는 행이 삽입됩니다.

generate_series() 함수



필수 매개변수 2개와 선택 매개변수 1개generate_series(start, stop, increment by [default is 1])를 사용하여 각각 일련의 숫자를 행으로 생성하는 함수입니다.

예시:

INSERT INTO test (id) VALUES (generate_series(1, 1000));


이렇게 하면 1씩 증가한 이전 ID와 동일한 ID를 가진 1000개의 행이 각각 삽입됩니다.

random() 함수



0에서 1까지 임의의 부동 소수점을 생성하는 함수입니다.

예시:

INSERT INTO test (id) VALUES (trunc(random()*100));


이렇게 하면 0에서 100까지 세 자리 숫자의 id가 생성됩니다(float를 정수로 만들기 위해 trunc).

모두 함께:



플레이어 테이블을 만들어 봅시다:

CREATE TABLE players (id INT, about TEXT, age INT);


그런 다음 임의의 데이터가 포함된 1000개의 행을 삽입해 보겠습니다.

INSERT INTO players (id, about, age) VALUES (generate_series(1, 1000),  repeat('A cool player. ', 2) || 'My number is ' || trunc(random()*1000), trunc(random()*10 * 2 + 10));



이 기사가 마음에 드셨기를 바랍니다. 다음에서 제 LinkedIn을 팔로우할 수 있습니다.

좋은 웹페이지 즐겨찾기