代码拉取完成,页面将自动刷新
该工具用于对项目批量添加测试数据,用于项目开发测试
目前工具不支持关联新增,但支持多表的批量数据新增
目前在测试下单表的新增性能innodb存储引擎下100w在5~7s的时间,具体性能需要依据你的电脑配置及参数配置决定
笔者的点配置如下
软件 | 参数 |
---|---|
cpu | i7-8 |
核数 | 8核 |
内存 | 16G |
mysql | 5.7 |
存储引擎 | innodb |
关于配置文件的参数可以看下方示例则为默认参数配置
go get -u gitee.com/dn-jinmin/tdg
这是目前提供高性能的唯一id生成规则,如果需要使用wuid需要在mysql中建立如下表格,对应的tag为wuid
CREATE TABLE `wuid` (
`h` int(10) NOT NULL AUTO_INCREMENT,
`x` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`x`),
UNIQUE KEY `h` (`h`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;
系统配置核心参数
{
"tdg": {
"data_one_init_max_memory": 104857600,
"build_sql_worker_num": 5,
"insert_sql_worker_num": 10,
"build_batches_count": 2000,
"debug": false,
"no_write": false,
"print_sql": false,
"skip_err": true
}
}
配置 | 解释 | 建议配置 |
---|---|---|
data_one_init_max_memory | 设置单个生成sql工作者最大初识内存 | 104857600 |
build_batches_count | 用于调优,批次生成SQL并写入数据库中 | 2000 |
build_sql_worker_num | 生成SQL工作者数量 | 5 |
insert_sql_worker_num | 数据新增工作者数量 | 10 |
配置 | 解析 |
---|---|
debug | 会打印系统中的参数信息,默认false,不开启 |
no_write | 是否写入SQL,默认false,写入sql |
print_sql | 打印SQL,默认false ,不打印 |
skip_err | 遇到错误是否跳过继续写入 |
mysql配置
{
"mysql": {
"addr": "127.0.0.1:3306",
"user" : "root",
"pass" : "000000",
"charset" : "utf8",
"dbname": "sharhall",
"table_prefix": ""
}
}
配置 | 解释 |
---|---|
addr | 地址 |
user | 用户名 |
pass | 密码 |
charset | 设置中文编码 |
dbname | 连接数据库 |
table_prefix | 表前缀 |
表配置
{
"tables": {
"table_name": {
"status": 0,
"table_name": "table name",
"count": 1000,
"columns": {
""
}
}
}
}
其中tables中定义需添加测试数据的表格与规则、支持同时添加多个表格
配置 | 解析 |
---|---|
tables.table_name | 表名,别名 |
tables.table_name.table_name | 数据库表名 |
status | 表状态 -1不新增 默认0新增 |
count | 生成数据量 |
columns | 生成字段列表 |
字段配置示例:
{
"table": {
"table_name": {
// ..
"columns": {
"col_name": {
"tag": "tag-name",
"len": 10,
"fixed_len": "2|3",
"max": 100,
"min": 10,
"params": "params",
"default": {
"value": "default-value",
"frequency": 30
},
"content": [
0,1,2
]
}
}
}
}
}
配置详细
配置 | 解释 |
---|---|
table.table_name.col_name | 数据表字段名,根据实际数据表字段定义 |
tag | 测试数据生成规则,如果不值得则需自定义content或default,默认为 "" 空字段 |
len | 字段数据长度,固定长度 |
fixed_len | 字段数据长度,可变长度;定义规则min|max 示例: 2|3则长度范围为(2,3) |
max | 最大值,目前仅支持数值类型 |
min | 最小值,目前仅支持数值类型 |
params | 规则参数,根据实际规则参数定义 |
default.value | 默认值 |
default.frequency | 默认值生成概率,以百分比进行计算frequency=100相当于100%,以百分比进行计算frequency=30则为30% |
content | 自定义测试数据的生成内容 |
执行tdg tag
即可查看所有支持tag
tag-name | 解释 |
---|---|
wuid | 生成唯一随机id,需在数据库建立对应wuid表 |
uint | 生成随机int类型数据,范围为(0 R) |
char | 随机 0~9, a~z, A~Z 组合字符 |
phone | 随机手机号码 |
随机邮件 | |
name | 随机名字 |
address | 随机地址 |
bankId | 随机生成银行卡 |
city | 随机城市 |
idcart | 随机身份证号码 |
chinese_char | 随机中文字符 |
english | 随机a~z,A~Z组合数据 |
wuid | 随机wuid |
order_no | 随机订单号码 |
password | 随机密码,支持hash与md5,默认密码0000 |
date | 随机时间,格式[2006-01-02] |
datetime | 随机时间,格式[2006-01-02 15:04:05] |
time | 随机时间,格式[15:04:05] |
timestamp | 随机时间戳 |
所有时间规则,在指定Default.Value为now则会获取当前时间;
可根据两个表的关联关系同时新增测试数据,
在etc中提供了一份用例table.json,如下为用例的数据表结构,目前支持的关联关系为1:1,1:n,n:1
{
"relevancy": {
"member:member_info": {
"tables": ["member","member_info"],
"columns": ["id" ,"id"],
"ties": "1:1"
}
}
}
配置详细
配置 | 解释 |
---|---|
relevancy | 关联关系 |
member:member_info | 关联关系key,自定义 |
tables | 关联表,暂时为两表关联 |
columns | 关联字段,与关联表信息一一匹对 |
ties | 关联关系 |
构建如下mysql表结构
CREATE TABLE `member_info` (
`id` varchar(255) NOT NULL,
`age` int(11) DEFAULT NULL,
`sex` int(11) DEFAULT NULL,
`card` varchar(255) DEFAULT NULL,
`desc` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=Innodb DEFAULT CHARSET=utf8;
CREATE TABLE `member` (
`id` varchar(255) NOT NULL,
`username` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`phone` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`status` tinyint(4) DEFAULT NULL,
`date` date DEFAULT NULL,
`datetime` datetime DEFAULT NULL,
`timestamp` int(11) DEFAULT NULL,
`time` time DEFAULT NULL,
`order_no` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=Innodb AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型