运维同事让我帮他给一个表增加2亿条数据,好方便他测试
我不想用脚本或java代码去执行,于是采用了oracle原生的sql语句
因为不常用,所以记录一下
-- 查询一下这个表当前有多少条数据
SELECT COUNT(*) FROM CUSTOMER_EVENT
-- 查询这个表目前的最大ID
SELECT ID FROM CUSTOMER_EVENT ORDER BY DESC
-- 为customer_event的主键id创建自增队列
CREATE SEQUENCE seq_customerEventId
INCREMENT BY 1 --按1递增
START WITH 1982356434456843 --从哪里开始
NOMAXvalue --不限制最大值, MAXvalue 99999999就是设置最大值
NOCYCLE; --不循环
-- 验证队列
SELECT seq_customerEventId.nextval FROM DUAL --第一次必须先执行nextval
SELECT seq_customerEventId.currval FROM DUAL
-- 创建触发器
CREATE OR REPLACE TRIGGER trigger_customerEventId
BEFORE INSERT ON CUSTOMER_EVENT --在插入数据前
FOR EACH ROW
WHEN(new.ID IS NULL) --只有当id为空时才触发
BEGIN
SELECT seq_customerEventId INTO :new.ID FROM sys.dual;
END;
-- 循环执行sql(2亿次)
DECLARE
x NUMBER;
BEGIN
x := 0;
WHILE x < 200000000 LOOP
x := x + 1;
INSERT INTO CUSTOMER_EVENT
(.....)
VALUES
(.....);
COMMIT;
END LOOP;
END;