generate_seriesという関数がダミーデータを作るのに便利で、度々使ってます。
例えば以下のような感じで、簡単に行を生成できます。
SELECT generate_series(1, 10, 1); /* 1から10まで1ずつ増やす */ /* generate_series ----------------- 1 2 3 4 5 6 7 8 9 10 (10 rows) */
これをFROM句に指定すれば、簡単にレコードを量産できます。
SELECT series AS id , 'hoge' AS value FROM generate_series(1, 10, 1) series ; /* id | value ----+------- 1 | hoge 2 | hoge 3 | hoge 4 | hoge 5 | hoge 6 | hoge 7 | hoge 8 | hoge 9 | hoge 10 | hoge (10 rows) */
増分を変えてみたり、、
SELECT series AS id , 'hoge' AS value FROM generate_series(1, 10, 2) series /* 2ずつ増やす */ ; /* id | value ----+------- 1 | hoge 3 | hoge 5 | hoge 7 | hoge 9 | hoge (5 rows) */
日付や時刻を引数に指定することもできます。
SELECT generate_series( '2019-01-01 00:00'::timestamp , '2019-01-07 00:00'::timestamp , '1 day'); /* generate_series --------------------- 2019-01-01 00:00:00 2019-01-02 00:00:00 2019-01-03 00:00:00 2019-01-04 00:00:00 2019-01-05 00:00:00 2019-01-06 00:00:00 2019-01-07 00:00:00 (7 rows) */
SELECT generate_series( '2019-01-01 00:00'::timestamp , '2019-01-01 05:00'::timestamp , '1 hour'); /* generate_series --------------------- 2019-01-01 00:00:00 2019-01-01 01:00:00 2019-01-01 02:00:00 2019-01-01 03:00:00 2019-01-01 04:00:00 2019-01-01 05:00:00 (6 rows) */
日付や時刻を扱うときは第3引数がinterval型になるので、 '1 days' なんて書きかたができます。 (interval型の記法は8.5. 日付/時刻データ型を参考に)
random関数とかを絡めれば、もっと自然なダミーデータを作れそう。
便利!