MySQL如何插入测试数据
关于插入MySQL测试数据,这里介绍两种方法:
选择优先级(结合PHP生成测试数据 > 使用存储过程 )。
- 使用存储过程(建议测试数据小于1000条使用该方法)
具体代码如下:
创建表:
mysql> create table TB1(
-> id int auto_increment not null,
-> name varchar(30) not null default 5,
-> primary key(id));
Query OK, 0 rows affected (0.02 sec)
创建存储过程:
mysql> delimiter $
mysql> create procedure testdata()
-> begin
-> declare i int default 1;
-> while(i<=1000) do
-> insert into TB1(name) values(concat("test",i));
-> set i=i+1;
-> end while;
-> end;
-> $
Query OK, 0 rows affected (0.02 sec) mysql> delimiter ;
调用存储过程:
mysql> call testdata();
Query OK, 1 row affected (5.13 sec)
PS:上图可以看出1000条数据的生成消耗了5.13秒,特别的慢!
- 结合PHP生成测试数据
testdata.php内容:
<?php
// 使用方法:php testdata.php root 123456
// 第一个参数为数据库用户名,第二个参数为数据库密码 // 一些设置项
set_time_limit(0);
$_ROWS = 100000; # 要插入的行数
$_DATABASE = "DB1"; # 库名
$_TABLE = "TB1"; # 表名
$_KV = array(
"name" => "test", # 字段名 => 字段前缀
); $t1 = microtime(true);
// 生成SQL语句
$sqlString = "INSERT INTO {$_TABLE} (". implode(",", array_keys($_KV)) .") VALUES ";
$arr = $valArr = array();
while ($_ROWS > 0) {
foreach($_KV as $k => $v) {
$arr[] = $v.$_ROWS;
}
$valArr[] = "('". implode("','", $arr) . "')";
$_ROWS--;
$arr = array();
}
$sqlString .= implode(',', array_values($valArr)) . ";"; // 导入数据库
list($scriptname, $dbuser, $dbpassword) = $argv;
$con = mysqli_connect("127.0.0.1", $dbuser, $dbpassword, $_DATABASE) or die("error connecting") ;;
mysqli_query($con, $sqlString);
mysqli_close($con);
$t2 = microtime(true);
echo round($t2-$t1, 3) . " sec\r\n";
执行脚本:
[root@desktop]# php testdata.php root 123456
0.48 sec
PS:通过两种方法的对比,使用PHP脚本导入100000条测试数据只花了0.48秒,可以看出该方法执行的速度远比使用存储过程快。
MySQL如何插入测试数据的更多相关文章
- mysql批量插入测试数据
一.建表语句 use test; create table student( Sno ) NOT NULL COMMENT '学号', Sname ) NOT NULL COMMENT '姓名', S ...
- mysql批量插入简单测试数据
mysql批量插入简单测试数据 # 参考网址: https://www.2cto.com/database/201703/618280.html 1.mysql创建测试表 CREATE TABLE ` ...
- MYSQL批量插入数据库实现语句性能分析
假定我们的表结构如下 代码如下 CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value ...
- MYSQL批量插入数据库实现语句性能分析【转】 批量插入!程序里面对于数据库插入的功能尽量用【异步处理+批量插入+(事务)】
假定我们的表结构如下 代码如下 CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 50 ) NOT NULL,value VA ...
- mysql 添加大量测试数据
mysql 添加大量测试数据 场景 针对于大量测试数据插入,检测sql执行速度 第一步:建表 // 测试表 CREATE TABLE user ( id int(11) NOT NULL AUTO_I ...
- MAC下 mysql不能插入中文和中文乱码的问题总结
MAC下 mysql不能插入中文和中文乱码的问题总结 前言 本文中所提到的问题解决方案,都是基于mac环境下的,但其他环境,比如windows应该也适用. 问题描述 本文解决下边两个问题: 往mysq ...
- mysql不能插入中文
mysql不能插入中文 解决办法: 1.打开终端,连接数据库 mysql -u root -p; 2.输入 satus; 查看状态 3.输入 set char set 'gbk'; 4.如果是已有的 ...
- Mysql大量插入随机数据方法--存储过程
创建测试表: mysql)); 创建存储过程: mysql> delimiter // mysql> create procedure rand_data(in num int) -> ...
- MySQL大批量插入数据
MySQL大批量插入数据 1. 对于Myisam类型的表,可以通过以下方式快速的导入大量的数据. ALTER TABLE tblname DISABLE KEYS; loading the ...
随机推荐
- 自学Zabbix3.8.1.1-可视化Visualisation-Graphs简单图表
自学Zabbix3.8.1.1-可视化Visualisation-Graphs简单图表 Zabbix提供了一些简单的图表,用于可视化由项目收集的数据. 用户不需要进行配置工作来查看简单的图表.他们是由 ...
- day02-多线程之线程安全
/** * 线程安全概念:当多个线程访问某一个类(对象或方法)时,这个对象始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的. * synchronized:可以在任意对象及方法上加锁, ...
- python_web----------数据可视化从0到1的过程
一.数据可视化项目配置 1. django + Echarts 2. 服务器(linux:Ubuntu 17.04 (GNU/Linux 4.10.0-40-generic x86_64)) 3. I ...
- zTree多条件模糊查询
function searchFun() { var zTrees=$.fn.zTree.getZTreeObj("ztree");//获得所有几点 var hiddenNodes ...
- springboot 入门六-多环境日志配置
在应用项目开发阶段,需要对日志进入很详细的输出便于排查问题原因,上线发布之后又只需要输出核心的日志信息的场景.springboot也提供多环境的日志配置.使用springProfile属性来标识使用那 ...
- 在 ReactNative 的 App 中,集成 Bugly 你会遇到的一些坑
一.前言 最近开新项目,准备尝试一下 ReactNative,所以前期做了一些调研工作,ReactNative 的优点非常的明显,可以做到跨平台,除了少部分 UI 效果可能需要对不同的平台进行单独适配 ...
- scala写算法-用小根堆解决topK
topK问题是指从大量数据中获取最大(或最小)的k个数,比如从全校学生中寻找成绩最高的500名学生等等. 本问题可采用小根堆解决.思路是先把源数据中的前k个数放入堆中,然后构建堆,使其保持堆序(可以简 ...
- 本地如何操作服务器的mysql,详细教程
前置条件: 1.在阿里云服务器de系统是win service 2012. 2.服务器里自己安装了my sql 5.7 3.本地也安装了my sql 5.7 需求:想通过本地的mysql连接上远程的服 ...
- 【quickhybrid】iOS端的项目实现
前言 18年元旦三天内和朋友突击了下,勉强是将雏形做出来了,后续的API慢慢完善.(当然了,主力还是那个朋友,本人只是初涉iOS,勉强能看懂,修修改改而已) 大致内容如下: JSBridge核心交互部 ...
- Using F2 to Rename Open Files
Copy to your User keymap { "keys": ["shift+f2"], "command": "rena ...