generate_series(GP):可以按不同的规则产生一系列的填充数据
Int类型
(1)generate_series(start, stop,—)生成一个数值序列,从start 到 stop,步进为 —
实例:
不写步进时默认为1
select generate_series(1, 10);
generate_series
-----------------
1
2
3
4
5
6
7
8
9
10
(10 rows)
(2) generate_series(start, stop,step)生成一个数值序列,从start 到 stop,步进为 step
设置步进函数
select generate_series(1, 10, 3);
generate_series
-----------------
1
4
7
10
(4 rows)
如果step 是正数,而start 大于stop,那么返回零行。相反,如果step 是负数,start 小于stop,则返回零行。如果是NULL 输入,也产生零行。step 为零则是一个错误
start 大于stop
select generate_series(5,1);
generate_series
-----------------
(0 rows)
stop 为空 NULL
select generate_series(5,null);
generate_series
-----------------
(0 rows)
start 大于stop ,step 为零
select generate_series(5,1,0);
ERROR: step size cannot equal zero
start 大于stop ,step 为负数
select generate_series(5,1,-1);
generate_series
-----------------
5
4
3
2
1
(5 rows)
时间类型(24小时切割)
select
generate_series(date_trunc('day', now()-interval '7 hour') + interval '7 hour',
date_trunc('day', now()-interval '7 hour') + interval '31 hour','1 hour') as fab_date
-------------------------------
2021-11-29 07:00:00
2021-11-29 08:00:00
2021-11-29 09:00:00
2021-11-29 10:00:00
2021-11-29 11:00:00
2021-11-29 12:00:00
2021-11-29 13:00:00
2021-11-29 14:00:00
2021-11-29 15:00:00
2021-11-29 16:00:00
2021-11-29 17:00:00
2021-11-29 18:00:00
2021-11-29 19:00:00
2021-11-29 20:00:00
2021-11-29 21:00:00
2021-11-29 22:00:00
2021-11-29 23:00:00
2021-11-30 00:00:00
2021-11-30 01:00:00
2021-11-30 02:00:00
2021-11-30 03:00:00
2021-11-30 04:00:00
2021-11-30 05:00:00
2021-11-30 06:00:00
(24 rows)
总结:
PostgreSQL的generate_series函数对生成测试数据,批量更新一定规则的数据有比较多的应用场景,使用得当可提升开发效率。