MySql大批量生成测试数据


*以下sql均使用于 mysql5.7 和 mysql8.0 *

函数准备

随机生成某个范围内的数字

【创建SQL】

create function generateNum(min int,max int) returns int
begin
    return floor(min+rand()*(max+1));
END 

【使用SQL】

## 生成10-100之间的随机数
SELECT generateNum(10,91);

随机生成指定长度的英文字符串

【创建SQL】

set global log_bin_trust_function_creators=TRUE;
create function generateStr(n int) returns varchar(255)
begin
    declare chars_str  varchar(100) default 'abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ';
    declare return_str varchar(255) default '';
    declare i int default 0;
    while (i < n) do
        set return_str = concat(return_str,substring(chars_str,floor(1+rand()*52),1));
        set i = i+1;
    end while;
    return return_str;
END 

【使用SQL】

## 传参为指定字符串长度
select generateStr(5); 

随机生成中文名

【创建SQL】

## 使用时,所在数据的编码需要设置为utf8,涉及到的表也为utf8,编码格式保持一致
CREATE FUNCTION `generateName`() RETURNS varchar(255) CHARSET utf8 DETERMINISTIC
BEGIN -- 开始
  DECLARE xing VARCHAR (2056) DEFAULT '赵钱孙李周郑王冯陈楮卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜谢喻柏水贺罗毕安常乐于黄和穆萧尹姚邵湛汪宋茅屈林胡丁陆荣'; -- 定义姓
  DECLARE ming VARCHAR (2056) DEFAULT '嘉轩烨伟苑博伟泽熠彤鸿煊博涛烨霖烨华煜祺智宸正豪昊然明杰诚立轩立辉峻熙弘文熠彤鸿煊烨霖哲瀚鑫鹏致远俊驰雨泽烨磊晟睿天佑文昊修洁黎昕远航旭尧鸿涛伟祺轩越泽浩宇瑾瑜皓轩擎苍擎宇志泽睿渊楷瑞轩弘文哲瀚雨泽鑫磊梦琪忆桃慕青问兰尔岚元香初夏沛菡傲珊曼文乐菱痴珊玉惜文香寒新柔语蓉海安夜蓉涵柏水桃醉蓝春儿语琴从彤傲晴语兰菱碧彤元霜怜梦紫寒妙彤曼易南莲紫翠雨寒易烟如萱若南寻真晓亦向珊慕灵以蕊寻雁映易雪柳孤岚笑霜海云凝天沛珊寒云冰旋宛儿绿'; -- 定义名
  DECLARE I_xing INT DEFAULT LENGTH(xing) 
### 如何在MySQL中插入实验数据 #### 方法一:单条插入 通过 `INSERT INTO` 语句可以实现向表中插入一条记录。以下是语法结构: ```sql INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); ``` 例如,如果有一个名为 `person` 的表,包含字段 ID、Name、Gender、Age,则可以通过以下命令插入一条数据[^1]。 ```sql INSERT INTO person (ID, Name, Gender, Age) VALUES (1, '张三', '男', 25); ``` #### 方法二:多条插入 为了提高效率,可以在一次操作中插入多条记录。这通常用于批量导入实验数据的情况。其语法如下所示: ```sql INSERT INTO table_name (column1, column2, column3, ...) VALUES (value_set_1), (value_set_2), ...; ``` 假设我们需要一次性插入三条记录到上述的 `person` 表中,可执行以下SQL语句[^4]: ```sql INSERT INTO person (ID, Name, Gender, Age) VALUES (2, '李四', '女', 28), (3, '王五', '男', 30), (4, '赵六', '女', 27); ``` #### 方法三:动态生成并插入大量测试数据 当需要插入大量的随机实验数据时,可以借助编程语言(如Python或PHP)来生成这些数据,并将其写入数据库。下面是一个简单的 Python 脚本示例,展示如何自动生成一批人员信息并插入到 MySQL 数据库中[^2]。 ```python import mysql.connector from random import randint # 连接至MySQL数据库 conn = mysql.connector.connect( host="localhost", user="your_username", password="your_password", database="test_db" ) cursor = conn.cursor() # 动态生成并插入10条随机数据 for i in range(1, 11): age = randint(18, 60) name = f"Person_{i}" gender = ['男', '女'][randint(0, 1)] sql = "INSERT INTO person (ID, Name, Gender, Age) VALUES (%s, %s, %s, %s)" val = (i, name, gender, age) cursor.execute(sql, val) # 提交更改并关闭连接 conn.commit() print(cursor.rowcount, "条记录已成功插入.") conn.close() ``` #### 解决中文字符乱码问题 在实际应用过程中可能会遇到汉字存储后显示为问号或其他不可识别字符的现象。这是由于编码设置不一致引起的。为了避免这种情况发生,在建立与 MySQL 数据库之间的通信之前应指定正确的字符集。例如,在 MFC 应用程序中可通过调用 `mysql_query()` 函数发送指令完成此目的[^3]。 ```cpp mysql_query(&m_sqlCon, "SET NAMES 'UTF8'"); // 或者对于 GBK 编码环境下的项目使用 mysql_query(&m_sqlCon, "SET NAMES 'GB2312'"); ``` 以上方法涵盖了从基础的手动输入少量数据到自动化脚本处理大批量复杂场景的不同需求层次上的解决方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小妖云汐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值