MySQL脚本批量自动插入数据及数据可按条件插入实现
作者:温水煮小杜
1.MySQL脚本批量自动插入数据(数据相同)
要自动插入100条数据,你可以使用循环来重复执行插入语句。以下是一个示例脚本:
INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);
具体步骤如下:
- 将 "表名" 替换为你要插入数据的目标表的名称。
- 将 "列1, 列2, 列3, ..." 替换为需要插入值的目标列的名称列表。
- 将 "值1, 值2, 值3, ... " 替换为你要插入的具体值。如果有多个列需要插入不同的值,可以使用循环生成对应的值。
以下是一个示例:
-- 假设有一个名为 "employees" 的表,表中有 id、name、age 和 salary 四个列 DELIMITER // CREATE PROCEDURE InsertData() BEGIN DECLARE i INT DEFAULT 1; WHILE i <= 100 DO INSERT INTO employees (id, name, age, salary) VALUES (i, CONCAT('John', i), 30, 5000); SET i = i + 1; END WHILE; END // DELIMITER ; CALL InsertData();
在上述示例中,我们定义了一个存储过程 InsertData()
,然后使用循环从1到100插入100条数据到 "employees" 表中。
请注意,你需要先创建存储过程,然后调用该存储过程来自动插入数据。确保已经连接到正确的数据库,并具有合适的权限来执行插入操作。
2.MySQL脚本批量自动插入数据(数据不相同)
如果每条数据不一样,你可以使用循环来生成不同的值,并在每次循环中使用 INSERT INTO 语句插入新的数据。
以下是一个示例脚本:
-- 假设有一个名为 "employees" 的表,表中有 id、name、age 和 salary 四个列 DELIMITER // CREATE PROCEDURE InsertData() BEGIN DECLARE i INT DEFAULT 1; WHILE i <= 100 DO SET @employeeId = i; SET @employeeName = CONCAT('John', i); SET @employeeAge = FLOOR(RAND()*(65-18+1))+18; -- 随机生成18到65岁的年龄 SET @employeeSalary = FLOOR(RAND()*(10000-3000+1))+3000; -- 随机生成3000到10000的工资 INSERT INTO employees (id, name, age, salary) VALUES (@employeeId, @employeeName, @employeeAge, @employeeSalary); SET i = i + 1; END WHILE; END // DELIMITER ; CALL InsertData();
在上述示例中,我们定义了一个存储过程 InsertData()
,使用循环生成不同的值,然后在每次循环中使用 INSERT INTO 语句插入新的数据到 "employees" 表中。
请注意,你需要先创建存储过程,然后调用该存储过程来自动插入数据。在示例中,我们使用了 RAND() 函数来生成随机的年龄和工资值。确保已经连接到正确的数据库,并具有合适的权限来执行插入操作。
3.MySQL脚本批量自动插入数据(数据按条件生成)
如果你想要限定 pay_date_time
列的值在最近五个月内,可以使用 DATE_SUB
函数和 INTERVAL
关键字来生成日期值。
如果 fac_id
列只能为指定的值 167、171、178、179、177、181、182 和 180,你可以使用 CASE WHEN
语句来生成随机选择的值。
以下是一个相应的示例脚本:
INSERT INTO pay_msg (fac_id, pay_type, biz_order_no, order_no, amount, status, channel_pay_time, pay_date_time, buyer_biz_user_id, termrefnum, channel_fee, extend_info, accttype, pay_interface_out_trade_no, termauthno, cus_id, pay_interfacetrxcode, trx_amt, acct, app_id, deleted) SELECT CASE FLOOR(RAND() * 8) WHEN 0 THEN '167' WHEN 1 THEN '171' WHEN 2 THEN '178' WHEN 3 THEN '179' WHEN 4 THEN '177' WHEN 5 THEN '181' WHEN 6 THEN '182' ELSE '180' END, CASE FLOOR(RAND() * 3) WHEN 0 THEN 'Alipay' WHEN 1 THEN 'WeChat Pay' ELSE 'Credit Card' END, CONCAT('KE', FLOOR(RAND()*1000000+100000)), CONCAT('PY', FLOOR(RAND()*1000000+100000)), FLOOR(RAND() * 1000 + 1), CASE FLOOR(RAND() * 2) WHEN 0 THEN 'Success' ELSE 'Failed' END, NOW() - INTERVAL FLOOR(RAND() * 30) DAY, DATE_SUB(NOW(), INTERVAL FLOOR(RAND() * 4 + 1) MONTH), -- 限定在最近五个月内 CONCAT('User', FLOOR(RAND()*1000+1)), CONCAT('REF', FLOOR(RAND()*1000000+100000)), FLOOR(RAND() * 10 + 1), CONCAT('Extend', FLOOR(RAND()*1000+1)), CASE FLOOR(RAND() * 6) WHEN 0 THEN '00' WHEN 1 THEN '01' WHEN 2 THEN '02' WHEN 3 THEN '03' WHEN 4 THEN '04' WHEN 5 THEN '05' ELSE '99' END, CONCAT('TNO', FLOOR(RAND()*1000000+100000)), CONCAT('TAN', FLOOR(RAND()*1000000+100000)), CONCAT('CUS', FLOOR(RAND()*1000000+100000)), CONCAT('PTC', FLOOR(RAND()*1000+1)), FLOOR(RAND() * 1000 + 1), CONCAT('ACCT', FLOOR(RAND()*1000000+100000)), CONCAT('APP', FLOOR(RAND()*1000000+100000)), 0 -- 逻辑删除设为0,表示未删除 FROM information_schema.tables LIMIT 50;
在上述示例中,使用 DATE_SUB
函数和 INTERVAL
关键字限定 pay_date_time
列的值在最近五个月内。使用 FLOOR(RAND() * 4 + 1)
生成一个 1 到 5 的随机整数,作为 INTERVAL
的参数;使用 CASE WHEN
语句来从指定的值中随机选择一个值赋给 fac_id
列。其他列的生成逻辑与之前的示例相同。
请确保已经连接到正确的数据库,并具有合适的权限来执行插入操作。
到此这篇关于MySQL脚本批量自动插入数据及数据可按条件插入实现的文章就介绍到这了,更多相关MySQL脚本批量自动插入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!