在对程序做测试需要对数据库做批量数据的插入
我这里使用了generate_series()函数,但在使用时遇到了
代码如下
INSERT INTO zf_active
select generate_series(147,149) as key,
1,
1,
generate_series ( '2021-04-01 12:00:00':: TIMESTAMP, ('2021-04-01 16:00:00' ) :: TIMESTAMP, '1hour'),
1,
'小城旅馆',
'574号',
1,
NULL,
round( random( ) * 17+1 ),
12,
130105,
'xx区',
now( ),
now( ) + '1 hour',
20
由于设置主键是生成三条主键分别为147,148,149的三条数据,但是在后面一条的generate_series函数为这三条数据分别生成2021-04-01 12:00:00,2021-04-01 13:00:00,2021-04-01 14:00:00的时间。
注意由于步进设置的为1小时,生成到2021-04-01 16:00:00。那么他会不止生成三条。在生成到2021-04-01 14:00:00后,主键ID又会从147开始。所以会出现最开始那张图的错误。
解决办法:
使用generate_series()对日期生成的个数需要和主键ID生成的个数一致即可。
我这里把生成日期截止到2021-04-01 14:00:00就好了。
INSERT INTO zf_active
select generate_series(147,149) as key,
1,
1,
generate_series ( '2021-04-01 12:00:00':: TIMESTAMP, ('2021-04-01 14:00:00' ) :: TIMESTAMP, '1hour'),
1,
'小城旅馆',
'574号',
1,
NULL,
round( random( ) * 17+1 ),
12,
130105,
'xx区',
now( ),
now( ) + '1 hour',
20
https://www.pianshen.com/article/6204134526/ pgsql批量插入数据
https://www.cnblogs.com/mchina/archive/2013/04/03/2997722.html generate_series函数