gpt4 book ai didi

Oracle - 插入 x 行随机数据

转载 作者:行者123 更新时间:2023-12-01 13:44:38 25 4
gpt4 key购买 nike

我目前正在做一些测试,需要大量数据(大约 100 万行)

我正在使用下表:

CREATE TABLE OrderTable(
OrderID INTEGER NOT NULL,
StaffID INTEGER,
TotalOrderValue DECIMAL (8,2)
CustomerID INTEGER);

ALTER TABLE OrderTable ADD CONSTRAINT OrderID_PK PRIMARY KEY (OrderID)

CREATE SEQUENCE seq_OrderTable
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10000;

并希望使用以下规则随机插入 1000000 行:
  • OrderID 需要是连续的(1、2、3 等...)
  • StaffID 需要是 1 到 1000 之间的随机数
  • CustomerID 需要是 1 到 10000 之间的随机数
  • TotalOrderValue 需要是一个介于 0.00 和 9999.99 之间的随机十进制值

  • 这甚至可以做到吗?我可以使用此更新语句生成所有这些吗?但是一次生成一百万行我不知道如何做到这一点

    感谢您对此事的任何帮助

    这就是我在更新时随机生成数字的方式:
    UPDATE StaffTable SET DepartmentID = DBMS_RANDOM.value(low => 1, high => 5);

    最佳答案

    出于测试目的,我使用以下查询创建了该表并一次性填充了它:

    CREATE TABLE OrderTable(OrderID, StaffID, CustomerID, TotalOrderValue)
    as (select level, ceil(dbms_random.value(0, 1000)),
    ceil(dbms_random.value(0,10000)),
    round(dbms_random.value(0,10000),2)
    from dual
    connect by level <= 1000000)
    /

    一些注意事项 - 最好使用 NUMBER 作为数据类型,NUMBER(8,2) 是十进制格式。使用“没有 PRIOR 的分层查询”技巧(“按级别连接 <= ...”技巧)来获取订单 ID 会更有效地填充此类表。

    如果您的表已经创建, insert into OrderTable (select level...)(与我的代码中的子查询相同)应该也能正常工作。您最好只在创建数据后添加 PK 约束,以免拖慢速度。

    创建的表中的一个小样本(在我的廉价笔记本电脑上创建表的总时间 - 1,000,000 行 - 为 7.6 秒):
    SQL> select * from OrderTable where orderid between 500020 and 500030;

    ORDERID STAFFID CUSTOMERID TOTALORDERVALUE
    ---------- ---------- ---------- ---------------
    500020 666 879 6068.63
    500021 189 6444 1323.82
    500022 533 2609 1847.21
    500023 409 895 207.88
    500024 80 2125 1314.13
    500025 247 3772 5081.62
    500026 922 9523 1160.38
    500027 818 5197 5009.02
    500028 393 6870 5067.81
    500029 358 4063 858.44
    500030 316 8134 3479.47

    关于Oracle - 插入 x 行随机数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36898287/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com