Mysql循环插入数据的实现

目录
  • Mysql 循环插入数据
    • WHILE…DO方式
    • 其他基本命令
  • Mysql 循环插入10000条数据
    • 1.所以按自己想法,写个循环1W次随便插入数据测试
    • 2.执行过程

Mysql 循环插入数据

说明:首先需要设置delimiter。

delimiter的作用:告诉解释器,这段命令是否已经结束了,mysql是否可以执行了

默认情况下,delimiter是‘;’但是当我们编写procedure时,如果是默认设置,那么一遇到‘;’,mysql就要执行。

WHILE…DO方式

/*循环插入*/
DELIMITER //
CREATE PROCEDURE callback()
BEGIN
  DECLARE num INT;
  SET num = 100;
  WHILE
    num < 300 DO
    INSERT INTO t_user(user_loginName,user_password,user_name,user_gender,user_email,user_gradeValueInt)
    VALUES(CONCAT("YuWang", num),CONCAT("pwd", num),CONCAT("YuWang", num),"男","1024@qq.com",num);
    SET num = num + 1;
  END WHILE;
END; 
//

设置好了存储过程要执行调用才生效

CALL callback();

其他基本命令

查看表

DESC USER;
SHOW FULL FIELDS FROM user;

查看表索引

SHOW KEYS FROM USER;
SHOW index FROM USER;

清空表

DELETE FROM USER;

查看指定库中的PROCEDURE

SELECT NAME FROM mysql.proc WHERE db = ‘test' AND TYPE = ‘PROCEDURE';

删除指定PROCEDURE

DROP PROCEDURE IF EXISTS callback;

查看创建代码

SHOW CREATE PROCEDURE callback;

调用存储过程(callback是自己命名的)

CALL callback();

删除存储过程(callback是自己命名的)

DROP PROCEDURE callback;

Mysql 循环插入10000条数据

因为项目用user和data两张表,把user中的部分字段拆分到data中,这样两表都要通过user_id关联起来(作为两表主键),当注册新用户时只往use表写入了user_id,data表无法同时写入user_id,这样会导致用户无法修改资料。

1.所以按自己想法,写个循环1W次随便插入数据测试

DROP PROCEDURE IF EXISTS proc_initData;--如果存在此存储过程则删掉
DELIMITER $
CREATE PROCEDURE proc_initData()
BEGIN
    DECLARE i INT DEFAULT 1;
    WHILE i<=10000 DO
        INSERT INTO data(user_id) VALUES(i);
        SET i = i+1;
    END WHILE;
END $
CALL proc_initData();

2.执行过程

a、第三行开始正式插入10000条数据,结果显示耗时 32.453秒

b、第四行验证插入是否成功,Mysql WorkBench限制只返回了1000条数据

c、第五行验证1000条以外的数据是否插入成功,返回了1行 user_id = 5231,成功插入!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

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

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

  • MySQL循环插入千万级数据

    1.创建测试表 CREATE TABLE `mysql_genarate` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uuid` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5999001 DEFAULT CHARSET=utf8; 2.创建一个循环插入的存储过程 CREATE DEFINER=`root`@`localhost` PROCEDURE

  • MySQL如何快速批量插入1000w条数据

    听说有个面试题是: 如何快速向mysql中插入1000w条数据? 我私下试了一下, 发现插入10000条数据用了0.9s, 插入10w条数据用了4.7s, 插入100w条数据用了58s左右,1000w条数据,我的笔记本吭哧了5分钟,自己停了, 心中1000w只草泥马呼啸而过,我用的是下面的代码: -- 进入数据库 use test; -- 显示所有表 show tables; -- 创建majors表 create table majors(id int, major varchar(255))

  • Mysql循环插入数据的实现

    目录 Mysql 循环插入数据 WHILE…DO方式 其他基本命令 Mysql 循环插入10000条数据 1.所以按自己想法,写个循环1W次随便插入数据测试 2.执行过程 Mysql 循环插入数据 说明:首先需要设置delimiter. delimiter的作用:告诉解释器,这段命令是否已经结束了,mysql是否可以执行了 默认情况下,delimiter是‘;’但是当我们编写procedure时,如果是默认设置,那么一遇到‘;’,mysql就要执行. WHILE…DO方式 /*循环插入*/ DE

  • 解决Mysql数据库插入数据出现问号(?)的解决办法

    首先,我用的mysql数据库是5.7.12版本. 出现的问题: 1.插入数据显示错误,插入不成功,出现:Incorrect string value: '\xCD\xF5\xD5\xBC\xBE\xA9' for column 'Sname' at row 1 2.插入中文,虽然插入成功,但是显示:?? 解决方法: 在my.ini文件中的 [mysqld] 中加入 #character-set-server=utf8 如图所示,必须在蓝圈的上方,就是说,蓝圈内的内容必须在[mysqld]的最下面

  • MySQL批量插入数据脚本

    MySQL批量插入数据脚本 #!/bin/bash i=1; MAX_INSERT_ROW_COUNT=$1; while [ $i -le $MAX_INSERT_ROW_COUNT ] do mysql -uroot -proot dbname -e "insert into tablename (name,age,createTime) values ('HELLO$i',$i % 99,NOW());" d=$(date +%M-%d\ %H\:%m\:%S) echo &qu

  • 防止MySQL重复插入数据的三种方法

    新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '姓名', `age` int NULL DEFAULT NULL COMMENT '年龄', `address` varchar(512) CHARACTER SET utf8 COLLATE utf8_bin N

  • Python操控mysql批量插入数据的实现方法

    在Python中,通过pymysql模块,编写简短的脚本,即方便快捷地控制MySQL数据库 一.连接数据库 使用的函数:pymysql.connect 语法:db=pymysql.connect(host='localhost',user='root',port=3306,password='Your password',db='database_name') 参数说明:host:MySQL服务器地址                           user:用户名             

  • mysql临时表插入数据方式

    目录 mysql临时表插入数据 临时表 mysql中临时表(TEMPORARY) 语法 功能 检查是否存在临时表 与MEMORY比较 mysql临时表插入数据 临时表 1.在数据库断开连接的时候会自动删除临时表. create temporary table IF NOT EXISTS client.getstucou( type_id int )Engine=InnoDB default charset utf8; 注意:在存储过程中创建了临时表的情况的话,在外面使用查询语句是找不到这张表的.

  • MYSQL批量插入数据的实现代码第1/3页

    @echo off cls set CLASSPATH=..\api\jogre.jar set CLASSPATH=%CLASSPATH%;. set CLASSPATH=%CLASSPATH%;classes set CLASSPATH=%CLASSPATH%;lib\dom4j.jar java org.jogre.server.JogreServer 建表 复制代码 代码如下: create database con_test; use con_test; create table te

  • mysql 选择插入数据(包含不存在列)具体实现

    mysql> select 'name',id from table_b; //'name' 不在table_b表中 +------+-----------+ | name | id | +------+-----------+ | name | 123456 | | name | 1234567 | | name | 12345678 | | name | 123456789 | +------+-----------+ 4 rows in set (0.00 sec) 复制代码 代码如下:

随机推荐