PostgreSQL: 쿼리로 쉽게 대용량 테스트 데이터 생성하기


응용프로그램을 테스트하기 위해 대용량 테스트 데이터가 필요하다면 generate_series를 사용해보세요.
엑셀로 테스트 데이터를 만들어 DB에 넣거나 간단한 스크립트를 만들어 사용하시는 분들도 있으실텐데요.
간단한 쿼리문으로 테스트 데이터를 원하는 데이터 만큼 빠르게 만들 수 있습니다.

100만건의 테스트 데이터 테이블 생성

데이터 건수를 지정하고 원하는 테이블 형태로 SELECT 쿼리를 만드시면 됩니다.
CREATE TABLE t AS 
    SELECT
        gs as idx,
        '테스트 문자열' || gs AS test_string,
        md5(random()::text) AS random_string
    FROM
        generate_series(1, 1000000) AS gs;
테스트 데이트 생성 결과는 아래와 같습니다.
idx |   test_string   |          random_string           
-----+-----------------+----------------------------------
   1 | 테스트 문자열1  | dd338ba654774bb643ada0c58c0d1141
   2 | 테스트 문자열2  | 5a2ce18d3cb1490c6dc3016f3e30547d
   3 | 테스트 문자열3  | 8510b427854b9502de373dc704c77430
   4 | 테스트 문자열4  | 44a1bbcc204fd1acd084c14546a58953
   5 | 테스트 문자열5  | 500280541accb7b3215c1d442412fd28
...이하 생략..
(1000000 rows)

시간 단위로 테스트 데이터 테이블 생성

시간을 기준으로 데이터를 만드는 예제 쿼리문인데 시작, 종료 시간과 시간 간격을 입력해주시면 됩니다.
PostgreSQL 8.4이상에서만 지원합니다. PostgreSQL 8.3이하 버전에서 사용하고 싶으시면 하단 "함께보기" 링크를 참고하세요.
CREATE TABLE t2 AS 
    SELECT
        (ROW_NUMBER() OVER()) as idx,
        md5(random()::text) AS random_string,
        gs AS test_date
    FROM
        generate_series('2015-01-01 00:00'::timestamp, '2015-01-01 23:00'::timestamp, '1 hours') AS gs;
테스트 데이트 생성 결과는 아래와 같습니다.
idx |          random_string           |      test_date      
-----+----------------------------------+---------------------
   1 | 81af86407f1f6b705a348e20e58c0274 | 2015-01-01 00:00:00
   2 | b607f9ae174028ce93dd5bf00fd9dd3f | 2015-01-01 01:00:00
   3 | 43dc52f35a0cb38fe68f35a2d97c3ac8 | 2015-01-01 02:00:00
   4 | 04bc8b1e0cda140bdf1505a34dfdb743 | 2015-01-01 03:00:00
   5 | 0825b4274c2f3a284befa1ab94eb9e98 | 2015-01-01 04:00:00
   6 | 86dc9e086baa00384e98b3d8ad6368a6 | 2015-01-01 05:00:00
...이하 생략..
(24 rows)

함께보기