CREATE PROCEDURE test.insertData(max_value INT)
BEGIN
# 定义一个 int 型的值默认为 0
DECLARE i INT DEFAULT 0;
# 定义一个多值的字符串
DECLARE stateArr TEXT DEFAULT 'INIT,REAL_NAME,REAL_NAME_REJECT,RISK,RISK_REJECT,RISK_FEATURE,CASHBACK_RISK_WORKFLOW_SUBMIT,CASHBACK_RISK_WORKFLOW_QUERY,RISK_FEATURE_REJECT,FREEZE,FREEZE_REJECT,WRITE_OFF,REFUND,REFUND_NO_MATCH,REFUND_REJECT,RECHARGE,SUCCESS';
DECLARE randomIndex INT;
DECLARE stateCount INT;
# 设置 stateCount 的值为多值字符串的长度
SET stateCount = 1 + LENGTH(stateArr) - LENGTH(REPLACE(stateArr, ',', ''));
# 循环进行插入 sql
WHILE i < max_value DO
# 随机获取 stateCount 范围的一个值
SET randomIndex = FLOOR(RAND() * stateCount) + 1;
INSERT INTO
cash_back_records
(cfrnid, uid, auth_num, forward_auth_num, card_bin, state, pack_state, cashback_reject_reason)
VALUES
(i, i, CONCAT('SKU_chargeback_XXX_XXXXX--', i), CONCAT('SKU_payment_XXX_XXXXX', i), i, SUBSTRING_INDEX(SUBSTRING_INDEX(stateArr, ',', randomIndex), ',', -1), randomIndex, randomIndex);
SET i=i+1;
END WHILE;
END
调用
CALL insertData(1000000) ;