MySQL存储过程,生成大量数据

MySQL存储过程,生成大量数据

2014年10月16日17:29:40

BEGIN 
DECLARE ID INT; 
DECLARE i INT; 
DECLARE CARDID VARCHAR(16);
DECLARE IssuerID VARCHAR(16);
DECLARE ObuID VARCHAR(16);
DECLARE License VARCHAR(25);
DECLARE strID VARCHAR(2);
DECLARE strTmp1 VARCHAR(3);
DECLARE strTmp2 VARCHAR(3);
DECLARE strTmp3 VARCHAR(3);
DECLARE NetNo VARCHAR(4);
DECLARE LicenseName VARCHAR(4);
DECLARE LicenseNameA VARCHAR(4);
DECLARE LicenseNameB VARCHAR(4);
SET ID = 11;
SET LicenseName = '京';
SET strID = RIGHT(CONCAT('00',cast(ID as char(2))),2);
SET i=0; 
set strTmp1 = '1';
SET strTmp1 = CONCAT(strID,'1');
SET strTmp2 = CONCAT(strID,'2');
SET strTmp3 = CONCAT(strID,'3');
SET NetNo = CONCAT(strID,'01');
SET LicenseNameA = CONCAT(LicenseName,'A');
SET LicenseNameB= CONCAT(LicenseName,'B');

WHILE i<100000 DO 
SET CARDID	= CONCAT(strTmp1,RIGHT(CONCAT('0000000000000',cast(i as char(16))),13));
SET IssuerID	= CONCAT(strTmp2,RIGHT(CONCAT('0000000000000',cast(i as char(16))),13));
SET ObuID	= CONCAT(strTmp3,RIGHT(CONCAT('0000000000000',cast(i as char(16))),13));
SET License	= CONCAT(LicenseNameA,RIGHT(CONCAT('00000',cast(i as char(16))),5));
#SET CARDID	= CONCAT('0847',cast(i as char(12)));
INSERT INTO `ETCBlackList11` VALUES (IssuerID, NetNo, CARDID, ObuID, License, '0', '0', '2000-01-01 00:00:00', '1', '2000-01-01 00:00:00', '测试', '16019', '0', '0', '0', null);
SET i = i + 1; 
END WHILE; 

WHILE i<200000 DO 
SET CARDID	= CONCAT(strTmp1,RIGHT(CONCAT('0000000000000',cast(i as char(16))),13));
SET IssuerID	= CONCAT(strTmp2,RIGHT(CONCAT('0000000000000',cast(i as char(16))),13));
SET ObuID	= CONCAT(strTmp3,RIGHT(CONCAT('0000000000000',cast(i as char(16))),13));
SET License	= CONCAT(LicenseNameB,RIGHT(CONCAT('00000',cast(i as char(16))),5));
#SET CARDID	= CONCAT('0847',cast(i as char(12)));
INSERT INTO `ETCBlackList11` VALUES (IssuerID, NetNo, CARDID, ObuID, License, '0', '0', '2000-01-01 00:00:00', '1', '2000-01-01 00:00:00', '测试', '16019', '0', '0', '0', null);
SET i = i + 1; 
END WHILE; 
END


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用MySQL的内置函数和语句来生成测试数据。以下是一些常用的方法: 1. 使用INSERT INTO语句:使用INSERT INTO语句将手动添加的数据插入到表中。例如,如果有一个名为"users"的表,可以使用以下语句插入测试数据: ``` INSERT INTO users (name, age) VALUES ('John', 25), ('Jane', 30), ('Bob', 35); ``` 2. 使用SELECT INTO语句:使用SELECT INTO语句从现有的表中选择数据并插入到新表中。例如,可以使用以下语句从现有的"users"表中选择前10行数据并插入到新的"test_users"表中: ``` CREATE TABLE test_users SELECT * FROM users LIMIT 10; ``` 3. 使用生成函数:MySQL提供了一些内置的生成函数,可以用于生成随机或递增的数据。例如,可以使用RAND()函数生成随机数,并将其插入到表中: ``` INSERT INTO table_name (column1, column2) VALUES (RAND(), RAND()); ``` 4. 使用循环语句:可以使用循环语句(如WHILE或FOR)在存储过程或函数中生成大量的测试数据。例如,可以使用存储过程生成指定数量的随机用户数据: ``` DELIMITER // CREATE PROCEDURE generate_test_data(IN num_rows INT) BEGIN DECLARE i INT DEFAULT 1; WHILE i <= num_rows DO INSERT INTO users (name, age) VALUES (CONCAT('User', i), FLOOR(RAND() * 100)); SET i = i + 1; END WHILE; END // DELIMITER ; CALL generate_test_data(1000); ``` 这是一些常用的方法来生成测试数据。根据你的具体需求和数据库结构,你可以选择适合的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值