Данный инструмент предназначен для пакетного добавления тестовых данных в проекты, используемые при разработке и тестировании.
В настоящее время инструмент не поддерживает добавление связанных данных, но поддерживает пакетное добавление данных в несколько таблиц.
На данный момент при добавлении данных в одну таблицу в среде InnoDB с движком хранения данных innodb на 100w записей затрачивается от 5 до 7 секунд. Точное время зависит от конфигурации компьютера и параметров настройки.
Конфигурация моего компьютера:
Параметр | |
---|---|
cpu | i7-8 |
Ядра | 8 ядер |
Память | 16G |
mysql | 5.7 |
Движок | innodb |
Параметры конфигурационного файла можно посмотреть в примере ниже, который представляет собой конфигурацию по умолчанию.
go get -u gitee.com/dn-jinmin/tdg
Это высокопроизводительное правило генерации уникальных идентификаторов. Для использования wuid необходимо создать следующую таблицу в mysql с тегом 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 |
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.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 | Минимальное значение. В настоящее время поддерживается только числовой тип данных |
------------------------- | ------------------------------------------------------------------------------------------ |
default.frequency | 默认值生成概率,以百分比进行计算frequency=100相当于100%,以百分比进行计算frequency=30则为30% |
content | 自定义测试数据的生成内容 |
Выполнение команды tdg tag позволит просмотреть все поддерживаемые теги.
tag-name | 解释 |
---|---|
wuid | Генерация уникального случайного id, необходимо создать соответствующую таблицу wuid в базе данных |
uint | Генерация случайных данных типа int, диапазон значений от 0 до R |
char | Случайные символы в диапазоне от 0 |
phone | Случайный номер телефона |
Случайная электронная почта | |
name | Случайное имя |
address | Случайный адрес |
bankId | Случайный номер банковской карты |
city | Случайный город |
idcart | Случайный идентификационный номер |
chinese_char | Случайные китайские символы |
english | Случайные данные на английском языке, состоящие из букв a |
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 | Ключ взаимосвязи, настраиваемый |
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;
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )