如何通过单条SQL语句向Postgre表批量插入100行随机数据
PostgreSQL 单条SQL批量插入100行随机测试数据方案
完全可以实现,你可以借助PostgreSQL内置的generate_series序列生成函数,搭配随机函数批量构造测试数据,无需循环或外部脚本,单条INSERT语句即可完成操作。
适配你的表结构的示例语句
INSERT INTO public.tasks (id, business_name, meta_title, status, title, type) SELECT i::bigint, -- 生成1-100的连续ID,若ID为自增主键可删除该行避免主键冲突 concat('business name ', i)::varchar, -- 可替换为substr(md5(random()::text),1,10)生成完全随机的字符串 concat('meta title ', i)::varchar, (array['active', 'inactive', 'pending'])[floor(random() * 3 + 1)]::varchar, -- 从指定状态列表随机取值 concat('title ', i)::varchar, (array['merchant', 'user', 'internal'])[floor(random() * 3 + 1)]::varchar -- 从指定类型列表随机取值 FROM generate_series(1, 100) AS t(i) RETURNING id;
关键逻辑说明
generate_series(1,100)会生成1到100共100行的数值序列,对应你需要的100条测试数据random()函数返回0到1的随机浮点数,结合数组下标可以实现从预设的枚举值中随机选取- 若需要完全无规律的字符串,可以用
substr(md5(random()::text), 1, 长度)的方式生成随机字符串替换拼接固定前缀的逻辑 - 如果你的
id字段已经设置为自增(serial/identity类型),可以去掉INSERT字段列表里的id,以及SELECT里的i::bigint行,数据库会自动生成唯一ID,避免和已有数据的ID冲突
内容的提问来源于stack exchange,提问作者Peter Penzov
相关产品推荐
相关产品推荐

