记一次批量插入数据库脚本练习
批量插入数据库脚本
- 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);
记一次批量插入数据库脚本练习相关推荐
- mysql不支持addbatch_【MySql】Java 批量插入数据库addBatch
//addBatch批量插入数据库 public static void insertCommentToMySql(Set commentList) { Iterator it = commentLi ...
- MYSQL批量插入数据库实现语句性能分析
MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下 CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( ...
- sql批量插入数据mysql_MYSQL批量插入数据库实现语句性能分析
假定我们的表结构如下: CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value VARCH ...
- 大量数据批量插入数据库
大量数据批量插入数据库 前言 工作时遇到了大量数据需要插入到数据库的情况,一条条的插入速度慢效率低下,不能满足需求,为了解决此问题采用了sql中使用foreach,并在service中设置批量来进行批 ...
- 转:Mybatis与JDBC批量插入数据库哪个更快
转自 http://www.cnblogs.com/fnz0/p/5713102.html, https://www.cnblogs.com/wxw7blog/p/8706797.html [转]: ...
- sql server 使用SqlBulkCopy批量插入数据库
sql server sqlbulkcopy 批量数据插入数据库使用的是System.Data.SqlClient中的 SqlBulkCopy批量数据插入数据库 sql server 使用SqlBul ...
- 记一次批量处理数据库中的敏感信息
前言 对于一些敏感数据,往往会对其加密后再入库,这个是对数据安全性的一个最为简单的措施. 最常见的莫过于手机号码和身份证号了,相信还是有不少公司对这些敏感信息是明文存储的. 万一被别人发现系统漏洞,或 ...
- MySql 批量插入数据库Java代码实现思路
说明: mysql执行inset语句并未明确说明限制多少条语句,但是sql语句在超过一定的大小后,执行就会报错,百度得知mysql 5.7 最大语句执行最大不能超过4M,当然,在mysql执行批量插入 ...
- 批量插入数据库语句java_java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)...
java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码) 发布于 2020-7-22| 复制链接 本文通过实例代码给大家分享了MyBatis批量插入数据到Oracle数据库 ...
最新文章
- 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值
- Cloud for Customer Fiori client导航栏里工作中心层级显示设定
- js webapp://_Project Student:维护Webapp(只读)
- php 调用openoffice,PHP调用OpenOffice实现word转PDF的方法
- 基于JAVA+SpringBoot+Mybatis+MYSQL的在线动漫信息平台
- vSphere 7 With Kubernetes系列01:随想
- 测试环境搭建:CentOS7环境装JDK+Nginx+Redis+MySql
- 多目标优化算法_阿里提出多目标优化全新算法框架,同时提升电商GMV和CTR
- mysql 基础教程 很全
- ai 自动外呼 微信加好友_制作一个可爱的Pwnagotchi AI好友来自动审核Wi-Fi网络
- 【应用统计学】随机变量的概率分布,数学期望和方差及协方差
- RFC 文档(1001-1500)
- 微信小程序创建项目后无法显示内容
- D38| DP理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
- mac safari无法打开网页_苹果手机浏览器打不开网页怎么办?Safari无法打开网页的解决方法...
- 为什么有时优盘是只读模式_u盘怎么解除只读模式
- 查询maven依赖的网址
- 使用unittest.defaultTestLoader.discover第二次总是报错
- 浪潮5280m4导轨安装_浪潮英信服务器NF5280M4用户手册V10.pdf
- 怎么创业赚取你人生第一桶金????