You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL的DBeaver中批量插入1000条带唯一约束的数据?

在DBeaver中给PostgreSQL批量插入1000条带唯一键的数据

方法一:用generate_series批量生成插入(最简便)

直接利用PostgreSQL原生的generate_series函数生成连续的唯一键值,一次性完成1000条数据插入,无需显式循环,效率远高于逐条插入。

示例SQL(假设id从21开始,reference从0001开始递增):

INSERT INTO TABLENAME (id, country, reference, status)
SELECT
  21 + s.idx AS id,
  'INDIA' AS country, -- 若需多国家随机,可替换为 array['INDIA','CHINA','USA'][(random()*3)+1::int]
  LPAD((s.idx + 1)::TEXT, 4, '0') AS reference, -- 生成0001、0002...格式的固定长度字符串
  'Pass' AS status
FROM generate_series(0, 999) AS s(idx); -- 生成0到999共1000个序列值

如果表中已有部分数据,担心唯一键冲突,可添加冲突处理逻辑:

INSERT INTO TABLENAME (id, country, reference, status)
SELECT
  21 + s.idx AS id,
  'INDIA' AS country,
  LPAD((s.idx + 1)::TEXT, 4, '0') AS reference,
  'Pass' AS status
FROM generate_series(0, 999) AS s(idx)
ON CONFLICT (id, reference) DO NOTHING; -- 遇到冲突直接跳过,也可改用DO UPDATE更新字段

DBeaver执行步骤:

  • 打开目标数据库的SQL编辑器
  • 替换TABLENAME为你的表名,按需调整id起始值、reference格式等参数
  • 点击执行按钮(▶️)即可完成插入

方法二:用PL/pgSQL匿名块循环插入(适合复杂逻辑)

如果需要更灵活的生成规则(比如随机status、多国家组合),可以用PostgreSQL的PL/pgSQL写匿名块实现循环插入。

示例代码:

DO $$
DECLARE
  v_counter INT := 0;
BEGIN
  WHILE v_counter < 1000 LOOP
    INSERT INTO TABLENAME (id, country, reference, status)
    VALUES (
      21 + v_counter, -- id从21开始递增
      CASE (random()*2)::INT -- 随机选择国家
        WHEN 0 THEN 'INDIA'
        WHEN 1 THEN 'CHINA'
        ELSE 'USA'
      END,
      LPAD((v_counter + 1)::TEXT, 4, '0'), -- 保持reference格式递增
      CASE (random()*1)::INT -- 随机生成Pass/Fail状态
        WHEN 0 THEN 'Pass'
        ELSE 'Fail'
      END
    )
    ON CONFLICT (id, reference) DO NOTHING; -- 处理唯一键冲突

    v_counter := v_counter + 1;
  END LOOP;
END $$;

执行方式与方法一一致,在DBeaver的SQL编辑器中运行即可。

注意事项

  • 确保生成的id和reference组合唯一:如果表中已有历史数据,需调整起始id和reference的起始值,避免冲突
  • 优先选择generate_series方法:该方法是原生批量插入,比PL/pgSQL循环效率更高
  • 若已有外部数据文件(如CSV),也可使用DBeaver的「导入数据」功能(右键目标表→导入数据),直接从文件批量导入

内容的提问来源于stack exchange,提问作者Mindwrap Thinker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:42:46