━目次━
開発しているとテストデータを大量に作りたいときがあるかと思います。
・性能調査するのに数十万件のデータが欲しい
・メモリが溢れたりしないか確認しておきたい
とかとかですね。
そんな時PostgreSQLでは1発で大量テストデータが作成できる便利な関数があるのでご紹介します。
その名も、、、
generate_series
generate_series関数とは
generate_seriesはPostgreSQLで使用できる集合を返す関数です。
連続値、または一定の間隔で増加していく値を返却してくれます。
考える人
説明は良いけぇコード見せぇ
じゃけぇ
はいはい
generate_seriesの使用例
それでは実際にどうやってテストデータを作るのか見てみましょう。
以下のような構造を持ったテーブルがあるとしましょう。
●顧客テーブル(test.”Customer”)
論理名 | ID | 顧客名 | メールアドレス |
---|---|---|---|
物理名 | Id | CustomerName | MailAddress |
データ型 | integer | varchar(256) | varchar(256) |
このテーブルに1万件のデータを設定する場合、以下のようなSQLを書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
INSERT INTO test."Customer"( "Id" ,"CustomerName" ,"MailAddress" ) SELECT i ,format('顧客名%s', i) ,format('%s@email.co.jp', i) FROM generate_series(1, 10000) as i ; |
じゃけぇ
たったこれだけだよ~
考える人
できたデータはどんな感じじゃ??
INSERTされたテーブルには
ID | 顧客名 | メールアドレス |
---|---|---|
1 | 顧客名1 | 1@email.co.jp |
2 | 顧客名2 | 2@email.co.jp |
・
・
・
10000 | 顧客名10000 | 10000@email.co.jp |
こんな感じのデータが出来上がります。
因みにgenerate_seriesの第3引数に数値を指定すれば、その数値間隔でデータが生成されます。
テストデータ生成ではあまり使うことないかもですが…
さいごに
わざわざテストデータ生成用の関数を自作しなくて良いので便利ですね。
他のDBでも同じような関数があるのか気が向いたら調べてみようと思います。
それでは!また!!
最後まで読んで頂きありがとうございます!
人気の記事だけ集めたので是非覗いていってください^^
厳選!目的別にオススメ記事を紹介-あなたの欲しい情報がここに-
人気の記事だけ集めたので是非覗いていってください^^
厳選!目的別にオススメ記事を紹介-あなたの欲しい情報がここに-