mysql模拟插入数据表

由于测试或者学习需要,我们要经常向一个新建的数据表插入几百万行以上的数据来验证我们的一些想法,比如索引的合理构建,表字段类型的设计等等,下面跟大家演示如何往一个新建的数据表插入N多条数据。

1.新建一个数据表,例如:

CREATE TABLE userinfo_uuid
(
    uuid varchar(36) NOT NULL,
    name varchar(64) NOT NULL DEFAULT ‘‘,
    email varchar(64) NOT NULL DEFAULT ‘‘,
    password varchar(64) NOT NULL DEFAULT ‘‘,
    dob date DEFAULT NULL,
    address varchar(255) NOT NULL DEFAULT ‘‘,
    city varchar(64) NOT NULL DEFAULT ‘‘,
    state_id tinyint unsigned NOT NULL DEFAULT ‘0‘,
    zip varchar(8) NOT NULL DEFAULT ‘‘,
    country_id smallint unsigned NOT NULL DEFAULT ‘0‘,
    gender enum(‘M‘,‘F‘) NOT NULL DEFAULT ‘M‘,
    account_type varchar(32) NOT NULL DEFAULT ‘‘,
    verified tinyint NOT NULL DEFAULT ‘0‘,
    allow_mall tinyint unsigned NOT NULL DEFAULT ‘0‘,
    parrent_account int unsigned NOT NULL DEFAULT ‘0‘,
    closest_airport varchar(3) NOT NULL DEFAULT ‘‘,
    PRIMARY KEY(uuid),
    UNIQUE KEY email (email),
    KEY country_id (country_id),
    KEY state_id (state_id),
    KEY state_id_2 (state_id,city,address)
)ENGINE=InnoDB;

2.因为这个表有很多varchar字段,我们需要构建一个rand_string函数可以随意插入任意字符长度的字段

set global log_bin_trust_function_creators = 1;

DROP FUNCTION IF EXISTS rand_string;
DELIMITER $$
CREATE FUNCTION rand_string(n INT)
RETURNS VARCHAR(255)
BEGIN
    DECLARE chars_str varchar(100) DEFAULT ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789‘;
    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()*62 ),1));
        SET i = i +1;
    END WHILE;
    RETURN return_str;
END $$
DELIMITER ;

3.创建存储过程

DELIMITER $$

     DROP PROCEDURE IF EXISTS `insert_userinfo_uuid`$$

     CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_userinfo_uuid`(IN item INTEGER)
     BEGIN
     DECLARE counter INT;
     SET counter = item;
     WHILE counter >= 1 DO
     insert into userinfo (uuid,name,email,password,dob,address,city,state_id,zip,country_id,gender,account_type,verified,allow_mall,parrent_account,closest_airport)
         values(uuid(),rand_string(64), rand_string(64), rand_string(64), ‘2010-10-10‘, rand_string(255), rand_string(64), ceil(rand() * 100), rand_string(8),
          ceil(rand() * 100), ‘M‘, rand_string(32), 0, 0, 0, rand_string(3));
     SET counter = counter - 1;
     END WHILE;
     END$$

     DELIMITER ;

4.最后调用N多次达到插入N条记录

call `insert_userinfo_uuid`(1000000);
时间: 2024-10-12 19:47:16

mysql模拟插入数据表的相关文章

mysql批量插入数据

review代码发现,同事mysql批量插入数据的实现方法是,用for循环遍历,将列表每个数据单次插入.相当于批量插入N条数据,进行了n次的数据库连接和插入操作. 底层有批量插入的方法,但是会有问题,所以已经停用,看下面实现是,取到一个数据库连接,来处理后面所有的插入操作.若这个列表ops所有的sql语句执行的数据库都是同一个的话,就没什么问题,若里面存在散库的情况,只要跟第一个不在同一个库的,都会执行失败. public void insertBatch(List<OpBatchUpdate>

MySQL大批量插入数据

MySQL大批量插入数据 1. 对于Myisam类型的表,可以通过以下方式快速的导入大量的数据. ALTER  TABLE  tblname  DISABLE  KEYS; loading  the  data ALTER  TABLE  tblname  ENABLE  KEYS; 这两个命令用来打开或者关闭Myisam表非唯一索引的更新.在导入大量的数据到一 个非空的Myisam表时,通过设置这两个命令,可以提高导入的效率.对于导入大量 数据到一个空的Myisam表,默认就是先导入数据然后才

MYSQL千万级数据表,创建表及字段扩展的几条建议

MYSQL千万级数据表,创建表及字段扩展的几条建议 一:概述 当我们设计一个系统时,需要考虑到系统的运行一段时间后,表里数据量大约有多少,如果在初期,就能估算到某几张表数据量非常庞大时(比如聊天消息表),就要把表创建好,这篇文章从创建表,增加数据,以及字段扩展,这几个方面来给出建议. 二:创建表 假如现在我们需要创建IM项目中的聊天消息表,这个表数据量大,读操作远超过写操作,我们都知道,mysql常用的数据库引擎主要有innodb,myisam,这两个数据库引擎主要区别是,innodb支持事务,

mysql大批量插入数据的4种方法示例

前言 本文主要给大家介绍了关于mysql大批量插入数据的4种方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法一:循环插入 这个也是最普通的方式,如果数据量不是很大,可以使用,但是每次都要消耗连接数据库的资源. 大致思维如下 (我这里写伪代码,具体编写可以结合自己的业务逻辑或者框架语法编写) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 for($i=1;$i<=100;$i++){  $sql = 'insert...............';  /

Mysql 如何删除数据表中的重复数据!

1.使用distinct查询所有不重复的记录 2.创建数据表相同结构的临时表,将第一步的数据复制进去 create temporary table if not exists student_temp as (select distinct(name), sex from student); 3.truncate table student; 4.insert into student(id,name,sex) select null,name,sex from student_temp; My

MySQL在创建数据表的时候创建索引

转载:http://www.baike369.com/content/?id=5478 MySQL在创建数据表的时候创建索引 在MySQL中创建表的时候,可以直接创建索引.基本的语法格式如下: CREATE TABLE 表名(字段名 数据类型 [完整性约束条件], [UNIQUE | FULLTEXT | SPATIAL] INDEX | KEY [索引名](字段名1 [(长度)] [ASC | DESC]) ); UNIQUE:可选.表示索引为唯一性索引. FULLTEXT:可选.表示索引为全

mysql编码、数据表编码查看和修改总结

1,查看自己安装的mysql的编码 2.查看Mysql支持的编码 3.查看数据库编码 4.查看数据表编码(show create table user \G;) 5.修改my.ini文件来修改编码:加上default-character-set=字符集(utf8.gbk.gb2312等) 6.命令行修改:alter database da_name default character set 'charset' :或  set names 'charset':或alter database te

Python数据库操作 MySQL数据库与数据表操作#学习猿地

# MySQL数据库与数据表操作 + 数据库的操作 + 数据库创建 + 数据库删除 + 数据表的操作 + 数据表的创建 + 数据表的修改 (表结构) + 数据表的删除 ### 数据库的操作 #### 1.数据库的创建 ```mysql # 链接mysql数据库后,进入mysql后可以操作数据 # 1. 创建库 create database if not exists tlxy default charset=utf8: -- 1. 数据库 tlxy 如果不存在则创建数据库,存在则不创建 --

mysql实现插入数据到分表

use mysql;/*创建原始数据表*/DROP TABLE IF EXISTS `articleinfo`;CREATE TABLE `articleinfo`(`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,`title` VARCHAR(20) DEFAULT NULL,`content` VARCHAR(20) DEFAULT NULL,`comment_time` VARCHAR(20) DEFAULT NULL) E