批量插入数据库脚本

  • 1.建表
    • dept表
    • emp表
  • 2.设置参数log_bin_trust_function_creators
  • 3.创建函数,保证每条数据不同
    • mysql自定义函数
      • 一、基本语法
      • 二、函数相关
    • 创建函数报错1418
    • 随机产生字符串
    • 随机产生部门编号
  • 4.创建存储过程
    • 存储过程相关
    • 创建往emp表中插入数据的存储过程
    • 创建往demp表中插入数据的存储过程
  • 5.调用存储过程
    • dept
    • emp

1.建表

dept表

create table dept(id int unsigned primary key auto_increment,deptno mediumint unsigned not null default 0 comment "部门编号",dname varchar(20) not null default "" comment "部门名称",loc varchar(20) not null default "" comment "部门位置"
);

emp表

create table emp(id int unsigned primary key not null auto_increment,empno int unsigned not null default 0 comment "编号",ename varchar(20) not null default "" comment "名字",job varchar(20) not null default "" comment "工作",mgr int unsigned not null default 0 comment "上级编号",hiredate date not null comment "入职时间",sal decimal(7,2) not null comment "薪水",comm decimal(7,2) not null comment "红利",deptno int unsigned not null default 0 comment "部门编号"
);

2.设置参数log_bin_trust_function_creators

set global log_bin_trust_function_creators = 1;

3.创建函数,保证每条数据不同

mysql自定义函数

一、基本语法

delimiter 自定义符号  -- 如果函数体只有一条语句, begin和end可以省略, 同时delimiter也可以省略
create function 函数名(形参列表) returns 返回类型  -- 注意是retruns
begin函数体    -- 函数内定义的变量如:set @x = 1; 变量x为全局变量,在函数外面也可以使用返回值
end 自定义符号
delimiter ;

二、函数相关

1. show function status [like 'pattern'];  -- 查看所有自定义函数, 自定义函数只能在本数据库使用。
2. show create function 函数名;  -- 查看函数创建语句
3. drop function 函数名;       -- 删除函数

创建函数报错1418

参考地址SQL报错1418

随机产生字符串

# 声明sql语句以$$为终结符号
delimiter $$
# 创建一个函数,名为rand_string,需要一个int类型参数,返回一个varchar类型
create function rand_string(n int) returns varchar(255)
begin# 声明chars_ste变量、return_str变量、ideclare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';declare return_str varchar(255) default '';declare i int default 0;while i < n do #     RAND() 函数被调用时,可以产生一个在 0 和 1 之间的随机数#  FLOOR(x) 函数返回小于 x 的最大整数值#   CONCAT(sl,s2,...) 函数返回结果为连接参数产生的字符串,或许有一个或多个参数。#   SUBSTRING(s,n,len) 带有 len 参数的格式,从字符串 s 返回一个长度同 len 字符相同的子字符串,起始于位置 n。set return_str = concat(return_str,substring(chars_str,floor(1+rand()*52),1));set i = i + 1;end while; return return_str;
end $$
# 声明sql语句以;为终结符号,mysql中默认以分号结尾,创建完函数之后,切换回默认设置
delimiter ;

随机产生部门编号

delimiter $$
create function rand_num() returns int(5)
begindeclare i int default 0;set i = floor(100 + rand() * 10);return i;
end $$
delimiter ;

4.创建存储过程

存储过程相关

1. show procedure status [like 'pattern'];  -- 查看所有自定义存储过程, 自定义存储过程只能在本数据库使用。
2. show create procedure 函数名;  -- 查看存储过程创建语句
3. drop procedure 函数名;      -- 删除存储过程

创建往emp表中插入数据的存储过程

delimiter $$
# 创建一个名为insert_emp的存储过程,入参为start与max_num均是int类型,in代表入参
create procedure insert_emp(in start int(10),in max_num int(10))
begindeclare i int default 0;# set autocommit = 0把autocommit设置为0,即关闭自动提交set autocommit = 0;# repeat循环repeatset i = i + 1;insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values ((start+i),rand_string(6),'programmer',0001,curdate(),2000,400,rand_num());until i = max_num end repeat;commit;
end $$
# 声明sql语句以;为终结符号,mysql中默认以分号结尾,创建完函数之后,切换回默认设置
delimiter ;

创建往demp表中插入数据的存储过程

delimiter $$
# 创建一个名为insert_dept的存储过程,入参为start与max_num均是int类型,in代表入参
create procedure insert_dept(in start int(10),in max_num int(10))
begindeclare i int default 0;# set autocommit = 0把autocommit设置为0,即关闭自动提交set autocommit = 0;# repeat循环repeatset i = i + 1;insert into dept(deptno,dname,loc) values ((start+i),rand_string(10),rand_string(8));until i = max_num end repeat;commit;
end $$
# 声明sql语句以;为终结符号,mysql中默认以分号结尾,创建完函数之后,切换回默认设置
delimiter ;

5.调用存储过程

dept

call insert_dept(1,100)

emp

call insert_emp(1000000000,5000000);

记一次批量插入数据库脚本练习相关推荐

  1. mysql不支持addbatch_【MySql】Java 批量插入数据库addBatch

    //addBatch批量插入数据库 public static void insertCommentToMySql(Set commentList) { Iterator it = commentLi ...

  2. MYSQL批量插入数据库实现语句性能分析

    MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下   CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( ...

  3. sql批量插入数据mysql_MYSQL批量插入数据库实现语句性能分析

    假定我们的表结构如下: CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value VARCH ...

  4. 大量数据批量插入数据库

    大量数据批量插入数据库 前言 工作时遇到了大量数据需要插入到数据库的情况,一条条的插入速度慢效率低下,不能满足需求,为了解决此问题采用了sql中使用foreach,并在service中设置批量来进行批 ...

  5. 转:Mybatis与JDBC批量插入数据库哪个更快

    转自 http://www.cnblogs.com/fnz0/p/5713102.html, https://www.cnblogs.com/wxw7blog/p/8706797.html [转]: ...

  6. sql server 使用SqlBulkCopy批量插入数据库

    sql server sqlbulkcopy 批量数据插入数据库使用的是System.Data.SqlClient中的 SqlBulkCopy批量数据插入数据库 sql server 使用SqlBul ...

  7. 记一次批量处理数据库中的敏感信息

    前言 对于一些敏感数据,往往会对其加密后再入库,这个是对数据安全性的一个最为简单的措施. 最常见的莫过于手机号码和身份证号了,相信还是有不少公司对这些敏感信息是明文存储的. 万一被别人发现系统漏洞,或 ...

  8. MySql 批量插入数据库Java代码实现思路

    说明: mysql执行inset语句并未明确说明限制多少条语句,但是sql语句在超过一定的大小后,执行就会报错,百度得知mysql 5.7 最大语句执行最大不能超过4M,当然,在mysql执行批量插入 ...

  9. 批量插入数据库语句java_java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)...

    java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码) 发布于 2020-7-22| 复制链接 本文通过实例代码给大家分享了MyBatis批量插入数据到Oracle数据库 ...

最新文章

  1. 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值
  2. Cloud for Customer Fiori client导航栏里工作中心层级显示设定
  3. js webapp://_Project Student:维护Webapp(只读)
  4. php 调用openoffice,PHP调用OpenOffice实现word转PDF的方法
  5. 基于JAVA+SpringBoot+Mybatis+MYSQL的在线动漫信息平台
  6. vSphere 7 With Kubernetes系列01:随想
  7. 测试环境搭建:CentOS7环境装JDK+Nginx+Redis+MySql
  8. 多目标优化算法_阿里提出多目标优化全新算法框架,同时提升电商GMV和CTR
  9. mysql 基础教程 很全
  10. ai 自动外呼 微信加好友_制作一个可爱的Pwnagotchi AI好友来自动审核Wi-Fi网络
  11. 【应用统计学】随机变量的概率分布,数学期望和方差及协方差
  12. RFC 文档(1001-1500)
  13. 微信小程序创建项目后无法显示内容
  14. D38| DP理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
  15. mac safari无法打开网页_苹果手机浏览器打不开网页怎么办?Safari无法打开网页的解决方法...
  16. 为什么有时优盘是只读模式_u盘怎么解除只读模式
  17. 查询maven依赖的网址
  18. 使用unittest.defaultTestLoader.discover第二次总是报错
  19. 浪潮5280m4导轨安装_浪潮英信服务器NF5280M4用户手册V10.pdf
  20. 怎么创业赚取你人生第一桶金????

热门文章

  1. 2021-2027全球及中国板式换热器行业研究及十四五规划分析报告
  2. 信号完整性基础02:从电感、电容到理想传输线(2)
  3. 基于51单片机和L298N的小车制作(一)
  4. linux排序格式,LINUX SORT 语法格式
  5. Is there anybody in there?
  6. 弘辽科技:淘宝如何运营店铺?运营步骤是什么?
  7. 360极速浏览器网页保护色
  8. 希音shein(广州)java开发岗面试
  9. Sorting Pancakes(dp)
  10. android计步器清零,手机计步器的数字如何清零