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

如何通过SQL Developer向Oracle现有表一次性插入200行模拟数据

Oracle 非生产环境批量插入200行测试数据实现方案

以下方案都可以直接在SQL Developer中执行,无需重复编写单条INSERT语句,按易用性排序:

  • 方案1:CONNECT BY 层级查询生成(最推荐,全dummy数据首选)
    利用Oracle原生的层级查询语法直接生成200行序列数据,无需依赖额外对象,单条SQL即可完成。
    假设你的目标表为your_table_name,包含id、user_name、create_time、status四个常见字段,示例代码如下:
INSERT INTO your_table_name (id, user_name, create_time, status)
SELECT
    level AS id, -- 生成1-200的自增序列作为主键
    'test_user_' || level AS user_name, -- 拼接生成测试用户名
    SYSDATE - DBMS_RANDOM.VALUE(1, 365) AS create_time, -- 随机生成近1年的创建时间
    CASE WHEN MOD(level, 2) = 0 THEN 'VALID' ELSE 'INVALID' END AS status -- 交替生成状态值
FROM dual
CONNECT BY level <= 200;

-- 确认数据无误后执行提交,有误则执行ROLLBACK回滚
COMMIT;

你可以根据自己的表字段调整生成规则:需要随机字符串用DBMS_RANDOM.STRING('x', 10)(生成长度10的混合大小写字符串),需要随机数值用DBMS_RANDOM.VALUE(1,1000)即可。

  • 方案2:INSERT ALL 多值插入(适合有固定测试值的场景)
    如果你有部分测试数据需要指定固定值,不需要按规则自动生成,可以用INSERT ALL语法,省略重复的INSERT INTO前缀:
INSERT ALL
    INTO your_table_name (id, user_name, create_time, status) VALUES (1, 'fixed_admin', SYSDATE, 'VALID')
    INTO your_table_name (id, user_name, create_time, status) VALUES (2, 'fixed_guest', SYSDATE, 'INVALID')
    -- 按需追加剩余行即可,无需重复写INSERT INTO
SELECT * FROM dual;

COMMIT;
  • 方案3:PL/SQL匿名块循环插入(适合复杂逻辑场景)
    如果测试数据需要关联字段逻辑(比如外键匹配、多字段联动规则),直接写匿名块在SQL Developer执行即可,不需要创建存储过程:
BEGIN
    FOR i IN 1..200 LOOP
        INSERT INTO your_table_name (id, user_name, create_time, status)
        VALUES (
            i,
            'batch_user_' || i,
            SYSDATE - INTERVAL '1' HOUR * i, -- 每一行创建时间比上一行早1小时
            DECODE(MOD(i,3), 0, 'PENDING', 1, 'VALID', 'INVALID')
        );
    END LOOP;
    COMMIT;
END;
/

执行提示:正式插入前可以先把INSERT部分改成SELECT执行预览,确认生成的数据字段类型、长度符合表约束,避免插入报错;未执行COMMIT前如果发现数据不符合预期,直接执行ROLLBACK;即可撤销操作。

内容的提问来源于stack exchange,提问作者007_programmer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 04:55:19