2020/03/11

[postgres] 產生假資料的範例

建立內含遞增數列當作 id 的資料表,數列從 1 開始到 10 的 7 次方。
CREATE TABLE serial_numb(id) AS
  SELECT i::bigint AS id FROM generate_series(1, 1e7) gs(i);
建立時間序列資料,log_time 每一筆差一秒,log_summarylog_time 的記錄到分鐘,沒有到秒數。
CREATE TABLE demo_data(log_time, log_time_summary) AS
  SELECT x::timestamp AS log_time, date_trunc('minute', x) AS log_time_summary
  FROM generate_series(timestamp '2020-01-01 00:00:00', 
    timestamp '2020-01-31 23:59:59', interval '1 sec') t(x);
複製資料到另一張新的表。
CREATE TABLE another_demo_data AS SELECT * FROM demo_data;
隨機選擇英文字母,形成字串,len 是字串長度。
CREATE FUNCTION random_alphabet(len int)
RETURNS varchar AS $$
SELECT array_to_string(
  ARRAY(
      SELECT substring(
        'ABCDEFGHIJKLMNOPQRSTUVWXYZ', trunc(random()*26)::int+1, 1
      )
      FROM generate_series(1, len) AS gs(x)
  )
  , ''
)
$$ LANGUAGE SQL;
隨機選擇數字,形成字串,len 是字串長度。
CREATE FUNCTION random_digit(len int)
RETURNS varchar AS $$
SELECT array_to_string(
  ARRAY(
      SELECT substring(
        '0123456789', trunc(random()*10)::int+1, 1
      )
      FROM generate_series(1, len) AS gs(x)
  )
  , ''
)
$$ LANGUAGE SQL;

沒有留言:

張貼留言