我有这张桌子:
CREATE TABLE TBIGP
(
IDPER NUMBER(6),
DESCRIZIONE VARCHAR2(50),
DINS DATE
)
PARTITION BY LIST (IDPER)
(
PARTITION P201201 VALUES(201201),
PARTITION P201202 VALUES(201202),
PARTITION P201203 VALUES(201203),
PARTITION P201204 VALUES(201204),
PARTITION P201205 VALUES(201205),
PARTITION P201206 VALUES(201206),
PARTITION P201207 VALUES(201207),
PARTITION P201208 VALUES(201208),
PARTITION P201209 VALUES(201209),
PARTITION P201210 VALUES(201210),
PARTITION P201211 VALUES(201211),
PARTITION P201212 VALUES(201212),
PARTITION P201301 VALUES(201301),
PARTITION P201302 VALUES(201302),
PARTITION P201303 VALUES(201303),
PARTITION P201304 VALUES(201304),
PARTITION P201305 VALUES(201305),
PARTITION P201306 VALUES(201306),
PARTITION P201307 VALUES(201307),
PARTITION P201308 VALUES(201308),
PARTITION P201309 VALUES(201309),
PARTITION P201310 VALUES(201310),
PARTITION P201311 VALUES(201311),
PARTITION P201312 VALUES(201312),
PARTITION OTHER VALUES(DEFAULT)
);
现在我想以这种方式填充表格。使用诸如for、while或loop之类的迭代过程,我希望每个分区由 500000 条记录组成。为了精确起见,每个分区有 1 到 450000-500000 条记录,其中记录数是随机的(一个分区可以有 480000 条记录,另一个分区有 490000 或 450000 或 467890 条记录......)。
每生成 1000 条记录,我想做一次commit。
我不知道是否清楚。我很难用英语解释。谢谢你。
编辑
像这样的东西:
BEGIN
FOR i IN 1..24
LOOP
j:=1
z:=dbms_random.value(450000,500000)
WHILE j<=z
INSERT INTO T_BIG_P_1
VALUES (i, 'description', TRUNC(SYSDATE + DBMS_RANDOM.value(0,366))
IF MOD (j, 1000) = 0 THEN
COMMIT;
END IF;
j:=j+1;
END LOOP;
END;
exec DBMS_STATS.GATHER_TABLE_STATS('SH','T_BIG_P_1');