開發自測時,數據庫需要造大量數據時,要用到Mysql存儲過程相關知識,下面分享下,希望對小伙伴們有所幫助:
CREATE PROCEDURE test() #創建存儲函數; BEGIN DECLARE i INT DEFAULT 1; WHILE i < 5000 DO #下面的insert語法要改成自己的表,同時構造value.id,要考慮防重; INSERT INTO `wbms_1`.`waybill_weight_volume_2`(`id`, `tenant_id`, `waybill_code`, `operate_code`, `volume`, `weight`, `length`, `width`, `height`, `weight_time`, `volume_time`, `ope_type`, `operator_code`, `operator_name`, `operate_station_code`, `operate_station`, `is_delete`, `create_time`, `update_time`, `create_user`, `update_user`, `ts`) VALUES (1356063857646284800+i, 'test', 'ZY1000502218621', 'ZY1000502218621-1-2-', 55.0000, 55.0000, 5.5000, 55.0000, 55.0000, '2020-09-20 16:39:56', '2020-09-20 16:39:56', 3, '21180252', '陳青山', '308766', '南京江駿營業部', 0, '2021-02-01 10:16:32', '2021-02-01 10:16:32', NULL, NULL, '2021-02-01 10:16:32.000'); SET i = i+1; end WHILE; END; CALL test();#調用存儲函數
下面是我寫的存儲過程:
CREATE PROCEDURE wmtest1(); #創建存儲過程循環執行,實現插入多條; BEGIN DECLARE i INT DEFAULT 275; WHILE i<276 DO INSERT INTO `msg_org_config` VALUES(i,2,'001','工單消息'), (i,3,'001','一般告警消息'), (i,4,'001','緊急告警消息'), (i,5,'001','重要告警消息'); SET i=i+1 END WHILE; END; CALL wmtest1();#調用存儲函數
注:存儲過程一定要寫在存儲過程窗口里面,不能寫在mysql的查詢窗口里面,否則會報錯的。
調用可以在查詢窗口中。
執行插入語句
INSERT INTO `org_table` ('org_id','push_way','target_ids','rela_org','push_config') VALUES (246,'02','',246,''),
(246,'01','',246,'2,3,5,4'),
(246,'01','124,170,188,227,228,270,271,272,286,287,288',0,'2,3,5,4'),
(246,'01','129,130,247,261,324,343,350',28,'2,3,5,4');
一直報錯,這里面有個自增的ID,所以我就用了字段,為什么呢?查了半天才 知道,這個字段不能加引號。mysql里加了引號就會報錯。
正確的如下:
INSERT INTO `org_table` (org_id,push_way,target_ids,rela_org,push_config) VALUES (246,'02','',246,''),
(246,'01','',246,'2,3,5,4'),
(246,'01','124,170,188,227,228,270,271,272,286,287,288',0,'2,3,5,4'),
(246,'01','129,130,247,261,324,343,350',28,'2,3,5,4');