当前位置:网站首页>MYSQL-Batch insert data
MYSQL-Batch insert data
2022-08-01 01:11:00 【The immortality of the march】
Bulk insert data
Stored procedures also have return values, stored procedures have one or more return values, and functions have one and only one return value
Insert 1000w data into the table
1. Build a table
create database bigData;use bigData;create table dept(id int unsigned primary key auto_increment,deptno mediumint unsigned not null default 0,dname varchar(20) not null default "",loc varchar(13) not null default "")engine=innodb default charset=GBK;CREATE TABLE emp(id int unsigned primary key auto_increment,empno mediumint unsigned not null default 0,ename varchar(20) not null default "",job varchar(9) not null default "",mgr mediumint unsigned not null default 0,hiredate date not null,sal decimal(7,2) not null,comm decimal(7,2) not null,deptno mediumint unsigned not null default 0)ENGINE=INNODB DEFAULT CHARSET=GBK;
2. Set the parameter log_bin_trust_function_creators
Since mysql itself will generate an error when inserting large data, a parameter, an enabled function module such as binary log, must be set.
Create a function, if an error is reported: This function has none of-DETERMINISTIC....#Because the slow query log is turned on, because we turned on bin-log, we must specify a function for our functionshow variables like 'log_bin_trust_function_creators';set global log_bin_trust_function_creators=1;#After adding parameters in this way, if mysqld restarts, the above parameters will disappear again, permanent method:My.ini[mysqld] under windows plus log_bin_trust_function_creators=1My.cnf[mysqld] under letc/my.cnf under linux plus log_bin_trust_function_creators=1
3. Create a random function to ensure that each data is different
- Randomly generated string
- Randomly generated department number
//Function: Randomly generate stringsdelimiter $$create function ran_string(n int) returns varchar(255)begindeclare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';declare return_str varchar(255) default '';declare i int default 0;while i < n doset return_str = concat(return_str,substring(chars_str,floor(1+rand()*52),1));set i=i+1;end while;return return_str;end $$//Function: Randomly generate department numberdelimiter $$create function rand_num() returns int(5)begindeclare i int default 0;set i=floor(100+rand()*10);return i;end $$# If you want to delete the function, execute: drop function rand_str
4. Create a stored procedure
- Create a stored procedure to insert data into the emp table
- Create a stored procedure to insert data into the dept table
#Stored procedure: create a stored procedure that inserts data into the emp tabledelimiter $$ :create procedure insert_emp(in start int(10),in max_num int(10))begindeclare i int default 0;set autocommit = 0; #Set autocommit to 0, so there is no need to commit every time a piece of data is inserted, and repeated commits affect execution efficiencyrepeatset i = i+1;insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values((start+i),ran_string(6),'salesman',0001,curdate(),2000,400,rand_num());until i=max_numend repeat;commit; #Automatic one-time commitend $$#delete# DELIMITER;# drop PROCEDURE insert_emp;#Stored procedure: Create a stored procedure that inserts data into the dept tabledelimiter $$create procedure insert_dept(in start int(10),in max_num int(10))begindeclare i int default 0;set autocommit = 0;repeatset i = i+1;insert into dept(deptno,dname,loc) values((start+i),ran_string(10),ran_string(8));until i=max_numend repeat;commit;end $$#delete#DELIMITER;#drop PROCEDURE insert_dept;
5. Call the stored procedure
delimiter ; #Restore to; endCALL insert_dept(100,10);CALL insert_emp(100,5);
When there is a large amount of data, it takes a lot of time.The select may take a long time. At this time, if the slow query log is enabled, the time-out sql statement will be recorded in the log.
Delete indexes on a table in batches
DELIMITER $$CREATE PROCEDURE `proc_drop_index`(dbname VARCHAR(200), tablename VARCHAR(200))BEGINDECLARE done INT DEFAULT 0;DECLARE ct INT DEFAULT 0;DECLARE _index VARCHAR(200) DEFAULT '';DECLARE _cur CURSOR FOR SELECT index_name FROM information_schema.STATISTICS WHEREtable_schema=dbname AND table_name=tablename AND seq_in_index=1 AND index_name <>'PRIMARY' ;DECLARE CONTINUE HANDLER FOR NOT FOUND set done=2 ;OPEN_cur;FETCH _cur INTO _index;WHILE _index<>'' DOSET @str = CONCAT("drop index ",_index," on ",tablename );PREPARE sql_str FROM @str ;EXECUTE sql_str;DEALLOCATE PREPARE sql_str;SET _index='';FETCH _cur INTO _index;END WHILE;CLOSE_cur;END $$#implementCALL proc_drop_index("dbname","tablename");
边栏推荐
- Classes and Objects: Above
- 高维高斯分布基础
- Rasa 3.x Study Series - Rasa - Issues 4898 Study Notes
- Super like the keyboard made from zero, IT people love it
- 谷歌『云开发者速查表』;清华3D人体数据集;商汤『通用视觉框架』公开课;Web3极简入门指南;高效深度学习免费书;前沿论文 | ShowMeAI资讯日报
- Compose原理-视图和数据双向绑定的原理
- 虹科分享|如何用移动目标防御技术防范未知因素
- Four ways the Metaverse is changing the way humans work
- WebApi hits an Attribute to handle exceptions uniformly
- RTL8762DK UART(二)
猜你喜欢
JVM面试题总结(持续更新中)
[微服务]分布式事务解决方案-Seata
【密码学/密码分析】基于TMTO的密码分析方法
RTL8762DK 使用DebugAnalyzer(四)
Kyoto University: Masaki Waga | Dynamic Masking for Reinforcement Learning in Black Box Environments
Kyoto University:Masaki Waga | 黑箱环境中强化学习的动态屏蔽
Modern Enterprise Architecture Framework 1
[Microservice] Distributed Transaction Solution - Seata
VPGNet
Classes and Objects: Medium
随机推荐
MYSQL关键字Explain解析
MYSQL查询截取优化分析
Matlab/Arcgis processing nc data
Google "Cloud Developer Quick Checklist"; Tsinghua 3D Human Body Dataset; SenseTime "Universal Vision Framework" open class; Web3 Minimalist Getting Started Guide; Free Books for Efficient Deep Learni
Likou Binary Tree
Qlib quantitative source analysis: qlib/qlib/contrib/model/GBDT py
In 2022, the latest eight Chongqing construction members (electrical construction workers) simulation question bank and answers
zeno使用方法笔记
RTL8762DK uses DebugAnalyzer (four)
两院院士直言:不要迷信院士
Kyoto University: Masaki Waga | Dynamic Masking for Reinforcement Learning in Black Box Environments
数据中台建设(七):数据资产管理
Detailed explanation of TCP protocol
Binary tree traversal non-recursive program -- using stack to simulate system stack
qlib量化源码分析:qlib/qlib/contrib/model/gbdt.py
值传递还是引用传递(By Value or By Reference)
[Microservice] Distributed Transaction Solution - Seata
Rasa 3.x Study Series - Rasa - Issues 4918 Study Notes
【 】 today in history: on July 31, "brains in vats" the birth of the participant;The father of wi-fi was born;USB 3.1 standard
Blueprint: Yang Hui's Triangular Arrangement