mysql如何高效批量插入数据
mysql如何高效批量插入数据
1、一种可以再代码中循环着执行单条插入数据的语句,这种效率太差。
insert into table ([列名],[列名]) values ([列值],[列值]));
2、批量插入,这种效率比较高效。
批量的好处:可以避免程序和数据库建立多次连接,增加服务器负荷。
SQL语句是有长度限制,在进行数据合并在同一SQL中务必不能超过SQL长度限制,通过max_allowed_packet配置可以修改,默认是1M。而且,由于大量的数据,也需要控制好在客户端分配的内存。
insert into table ([列名],[列名]) VALUES
([列值],[列值])),
([列值],[列值])),
([列值],[列值]));
这里可能需要考虑的一个点,因为数据量大,可能分多次执行该语句,有时数据想要么都插入成功,要么插入都无效。这个就想着 采用合并数据 + 事务的方法,但是,事务是会有影响执行效率的。务需要控制大小
,事务太大可能会影响执行的效率。MySQL有innodb_log_buffer_size配置项,超过这个值会把innodb的数据刷到磁盘中,这时,效率会有所下降。
可以考虑,给数据加个状态,例如,插入前为初始化的状态, 待for循环插入成功后, 将刚所有的数据的状态都update为有效的状态。以修改成功返回的结果来判断是否数据都插入完毕来判断数据的一致性。
3、LOAD DATA
LOAD DATA INFILE 语句以非常高的速度从文本文件(csv/tsv)中读取行,再插入到表中。
用法
LOAD DATA INFILE ... [REPLACE|IGNORE] INTO TABLE : replace into 表示如果导入过程中有唯一性约束,直接覆盖;ignore into 则跳过。
load data 需要有处理文件的权限, GRANT FILE ON *.* TO user@host;
LOAD DATA INFILE filePath REPLACE INTO TABLE myTable([列名1],[列名2])
将数据文件存储在客户端,并且使用LOCAL关键词。就是说在非服务端执行load data需要使用local,比如在 ipA 处登录 ipB 上的mysqld,就需要用到 local 。
LOAD DATA LOCAL INFILE filePath INTO TABLE myTable([列名1],[列名2])
mysql如何高效批量插入数据相关推荐
- mysql中关于批量插入数据(1万、10万、100万、1000万、1亿级别的数据)二
硬件:windows7+8G内存+i3-4170处理器+4核CPU 关于前天写的批量插入数据,还有一种方式,就是通过预先写入文本文件,然后通过mysql的load in file命令导入到数据库,今天 ...
- mysql使用函数批量插入数据
不管是在做并发测试还是大数据的压力测试时,我们都需要造很多的用户或者记录数据,经常就需要用到往数据库批量插入数据,以满足测试需求. 以下实例使用的是mysql数据库,客户端为Navicat 1.选择需 ...
- mysql利用存储过程批量插入数据
-- 如果存在此存储过程则删掉 DROP PROCEDURE IF EXISTS proc_initData; -- 定好结束符为"$" DELIMITER $ -- 创建 CRE ...
- Mysql通过存储过程批量插入数据
创建表 DROP TABLE if exists employees_partition; CREATE TABLE if not exists `employees_partition` (`id` ...
- MySQL使用存储过程批量插入数据
# 1. 创建学生表和课程表 create table `student_info`( `id` int(11) not null auto_increment, `student_id` int n ...
- mysql中关于批量插入数据(1万、10万、100万、1000万、1亿级别的数据)
硬件:windows7+8G内存+i3-4170处理器+4核CPU 首先贴上数据库的操作类BaseDao: import java.sql.Connection; import java.sql.Dr ...
- mysql命令行批量添加数据_mysql命令行批量插入100条数据命令
先介绍一个关键字的使用: delimiter 定好结束符为"$$",(定义的时候需要加上一个空格) 然后最后又定义为";", MYSQL的默认结束符为" ...
- MySQL批量插入数据的几种方法
最近公司要求测试数据库的性能,就上网查了一些批量插入数据的代码,发现有好几种不同的用法,插入同样数据的耗时也有区别 别的先不说,先上一段代码与君共享 方法一: package com.bigdata; ...
- thinkphp mysql批量入库_ThinkPHP3.2框架使用addAll()批量插入数据的方法
本文实例讲述了ThinkPHP3.2框架使用addAll()批量插入数据的方法.分享给大家供大家参考,具体如下: thinkphp中model类的addAll()方法可以将数据同时添加到数据库中. / ...
最新文章
- ASSERT(断言)的用法
- 马斯克一作!Neuralink脑机接口细节公布,特殊材料防大脑损伤,专用芯片助技术落地...
- wireshark筛选dhcp包_使用wireshark抓包工具,对DHCP、HTTP、DNS的数据包进行分析
- 优化器,SGD+Momentum;Adagrad;RMSProp;Adam
- 三年经验前端社招——朴朴科技
- 线性代数 —— 矩阵的行列式
- linux系统怎么安装cas,CAS 在Linux中安装与配置
- list删除某个元素_java list 删除元素
- List 列表中的对象在循环中的声明问题
- sql server cross/outer apply 用法
- Android四大组件的作用
- 计算机网络习题(参考)
- Python爬取虎扑NBA球员信息
- JavaScript对象类型的详解
- 银联刷卡POS机冲正
- NOVELL NetWare 下的数据恢复
- Python 网络编程
- JS ASCII码转换代码
- 如何使用 JavaScript 开发者控制台
- 存储与服务器的连接方式对比(DAS,NAS,SAN)
热门文章
- qiankun微前端:script xxxxxx replaced by qiankun或script xxxxxxxxxx replaced by import-html-entry
- php制作登录页面的过程_一个用Html制作的漂亮登录页面
- FILETIME和LARGE_INTEGER
- 新闻等上一条、下一条功能
- 基于PyQt5和Pywinauto自动化测试客户端
- java中accept什么意思_文件输入'accept'属性 - 有用吗?
- 仙儿都不晓得是为什么
- FreeSql 新的八大骚功能,.NETCore 你必须晓得的 ORM
- Git的下载以及安装配置
- 图像的OTSU阈值化、双阈值化、半阈值化的原理及OpenCV代码实现