2017年10月24日火曜日

PostgreSQLでサンプルデータを生成する

PostgreSQLカンファレンスのチュートリアルトラックに向けて準備して(後輩のお世話、というか半強制的に「やります!」と言わせたセッションなので手を差し伸べて)るんだけど、インデックスチューニングの話をするのに美しくランダムなデータが欲しいわけじゃん。

というわけで、Let's PostgreSQLの記事を参考にいろんな型のサンプルデータを作るSQLを作成した。


SELECT * FROM
 (SELECT i
        ,(random()*1000)::int%80                                               num_sample
        ,(now()-(random()*1000)::int%365*interval'1day')::date                 date_sample
        ,(now()-(random()*1000000000)::int*interval'1microseconds')::timestamp ts_sample
        ,lpad(string_agg(str1,''),8)                                           text_sample1
        ,lpad(string_agg(str2,''),4)                                           text_sample2
        ,string_agg(str3, '')                                                  mbyte_sample
  FROM ( SELECT
                 i,
                 chr(97+(random() * 1000)::int % 26 )    as str1,
                 chr(97+(random() * 10)::int % 3 )       as str2,
                 chr(12354+(random() * 1000)::int % 85 ) as str3
         FROM generate_series(1,20) length
             ,generate_series(1,1000) num(i)
         )t
  GROUP BY i) datagen
;

0 件のコメント:

コメントを投稿

PostgreSQL11のJITコンパイリングを試す

llvm-postgres 開発中のPostgreSQL11でJIT(Just In Time=実行時)コンパイリングを行い、クエリ性能の高速化を期待する新機能が登場した。 本記事では 構築方法を確認したので紹介。JITコンパイ...