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
列。其他列的生成逻辑与之前的示例相同。
请确保已经连接到正确的数据库,并具有合适的权限来执行插入操作。
可以参考操作!有问题请指出,或有优化代码可以评论区指出,互助共勉!