大批量插入数据

如果一次性需要插入大批量数据,使用insert语句插入性能较低

可以使用MySQL数据库提供的load 指令进行数据插入

# 客户端连接服务端时,加上参数 `--local-infile`
mysql --local-infile -uroot -p# 设置全局参数local_infile,开启从本地加载文件导入数据的关
set global local_infile = 1;# 执行load指令将准备好的数据,加载到表结构中
load data local infile '/root/data.csv'
into table `tb_user`
fields terminated by ','
lines terminated by '\n';

示例

利用Python脚本生成测试数据

# Python >= 3.7.0
# 安装依赖 pip install faker pandas
from faker import Faker
import pandas as pd# 简体中文:zh_CN
faker = Faker(locale="zh_CN")
# 指定随机种子,确保每次生成的数据都是一致的
faker.seed(1)def get_row(index=0):return {'id': index + 1,'username': faker.phone_number(),'passowrd': faker.password(),'name': faker.name(),'birthday': faker.date_time().strftime("%Y-%m-%d"),'sex': faker.random_int(0, 2),}def main():# 100万条数据data = [ get_row(i) for i in range(100 * 10000)]# 将数据导出为csv文件, 不需要表头和序号df = pd.DataFrame(data)df.to_csv('./data_user.csv',header=False,index=False)if __name__ == '__main__':main()

查看数据

# 查看要导入的测试数据
$ wc -l data_user.csv 1000000 data_user.csv$ head data_user.csv
1,13891417776,$h!PMHaS1#,魏玉珍,2021-12-20,1
2,18883533740,BP3UqgUd&8,正红梅,2020-08-11,1
3,18225851781,#$mMRcl98H,殳桂芝,1988-04-28,2
4,13190682883,ywDqePXl&0,仰俊,2007-06-25,2
5,13918401107,2!WP4H8it9,农琳,1993-05-13,1
6,13334148396,3%8AqgmG!j,宗涛,2020-03-08,1
7,13830411442,@&%9yI9r%e,荣建平,1977-02-08,2
8,15948705964,y2VGFM0k!W,齐英,1981-07-19,0
9,18983459845,I^5w1D^e)j,安凤英,2008-07-07,0
10,15154981741,@!4A^CIt82,乜峰,2007-06-11,1

创建测试表

# 开启外部数据加载
$ mysql --local-infile -uroot -p> select @@local_infile;> set global local_infile = 1;# 创建一个新的数据库和新的表来存放数据
> show databases;> create database data_temp;> user data_temp;> create table tb_user(id int primary key auto_increment,username varchar(50) not null,passowrd varchar(50) not null,name varchar(20) not null,birthday date default null,sex tinyint default 0,unique key uk_user_username (`username`)
) engine=innodb default charset=utf8;

导入数据

# 导入数据
> load data local infile '/data/data_user.csv'
into table `tb_user`
fields terminated by ','
lines terminated by '\n';Query OK, 999830 rows affected, 170 warnings (17.68 sec)
Records: 1000000  Deleted: 0  Skipped: 170  Warnings: 170# 查看导入的数据
mysql> select * from tb_user limit 10;
+----+-------------+------------+-----------+------------+------+
| id | username    | passowrd   | name      | birthday   | sex  |
+----+-------------+------------+-----------+------------+------+
|  1 | 13891417776 | $h!PMHaS1# | 魏玉珍    | 2021-12-20 | 1    |
|  2 | 18883533740 | BP3UqgUd&8 | 正红梅    | 2020-08-11 | 1    |
|  3 | 18225851781 | #$mMRcl98H | 殳桂芝    | 1988-04-28 | 2    |
|  4 | 13190682883 | ywDqePXl&0 | 仰俊      | 2007-06-25 | 2    |
|  5 | 13918401107 | 2!WP4H8it9 | 农琳      | 1993-05-13 | 1    |
|  6 | 13334148396 | 3%8AqgmG!j | 宗涛      | 2020-03-08 | 1    |
|  7 | 13830411442 | @&%9yI9r%e | 荣建平    | 1977-02-08 | 2    |
|  8 | 15948705964 | y2VGFM0k!W | 齐英      | 1981-07-19 | 0    |
|  9 | 18983459845 | I^5w1D^e)j | 安凤英    | 2008-07-07 | 0    |
| 10 | 15154981741 | @!4A^CIt82 | 乜峰      | 2007-06-11 | 1    |
+----+-------------+------------+-----------+------------+------+
10 rows in set (0.00 sec)mysql> select count(*) from tb_user;
+----------+
| count(*) |
+----------+
|   999830 |
+----------+
1 row in set (0.14 sec)

100W数据,如果使用insert一条一条插入,或者是多条一起插入耗时很长。
使用load data local infile 的方式,仅耗时17.68秒

MySQL:load data local infile快速插入大批量数据相关推荐

  1. java mysql 文本导入数据语句_Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQL...

    Mysql load data的使用 数据库中,最常见的写入数据方式是通过SQL INSERT来写入,另外就是通过备份文件恢复数据库,这种备份文件在MySQL中是SQL脚本,实际上执行的还是在批量IN ...

  2. mysql 通过load data local infile导入txt文件数据

    如果一次性需要插入大批量数据,使用insert语句插入性能较低 可以使用MySQL数据库提供的load 指令进行数据插入: # 执行load指令将准备好的数据,加载到表结构中 load data lo ...

  3. mysql8的load data_mysql8.0 使用LOAD DATA LOCAL INFILE 批量插入数据

    mysql从5升级到8之后,因为驱动变化,以前的方法部分方法再8中不能使用, LOAD DATA LOCAL INFILE做为一个好用高效的方法也有一些变化 代码: ​​​​​​​public voi ...

  4. MySQL Load data local infile蜜罐

    ​MySQL Load data infile是有一个很有意思的功能,最早接触的时候,没有太过在意,后来在安全扫描中,被提示需要关闭local_infile选项(当然,默认该选项就是关闭的,只是安全扫 ...

  5. Mybatis拦截器 mysql load data local 内存流处理

    Mybatis 拦截器不做解释了,用过的基本都知道,这里用load data local主要是应对大批量数据的处理,提高性能,也支持事务回滚,且不影响其他的DML操作,当然这个操作不要涉及到当前所lo ...

  6. jpa mysql脚本迁移_JPA通过LOAD DATA LOCAL INFILE大批量导入数据到MySQL

    连接层代码: import org.hibernate.Session; import org.hibernate.internal.SessionFactoryImpl; import org.sp ...

  7. mysql infile local,MySQL:启用LOAD DATA LOCAL INFILE

    I'm running Mysql 5.5 on Ubuntu 12 LTS. How should I enable LOAD DATA LOCAL INFILE in my.cnf? I've t ...

  8. MYSQL 8.0 WORKBENCH使用LOAD DATA LOCAL INFILE报错解决方案

    问题出现在我需要用LOAD DATA LOCAL INFILE 导入csv文件,路径为'D:/xxx/xx/xx.csv'时报错,一开始报错找不到文件or文件夹,意思是文件或文件夹必须要在服务器/客户 ...

  9. Load data local infile 实验报告

    1.实验内容: 利用SQL语句"load data local infile"将"pet.txt"文本文件中的数据导入到mysql中 (pet表在数据库mena ...

  10. Mysql load data local命令详解

    1.load data local命令使用方法 不指定字段名 此写法数据文件内字段数必须跟数据库表一致 load data local infile "C:\\test.txt" ...

最新文章

  1. 最快捷的阅读实训新闻
  2. Android studio | From Zero To One ——XML文件中的单行注释与多行注释
  3. InstantClient安装使用
  4. mfs分布式存储+master端高可用
  5. Codefroces1077F2. Pictures with Kittens (hard version)
  6. 【HDU - 5917】Instability(规律,结论,Ramsey定理,知识点,tricks)
  7. Cloud一分钟 | 电商月将至,腾讯云DCDB助力电商企业应对支付洪峰
  8. 一步步实现SDDC-分布式交换机入门
  9. 吐槽下CSDN编辑器
  10. 网络安全与管理精讲视频笔记10-Windows隧道模式IPSec配置实验演示
  11. SQL Server 2005利用分区对海量数据的处理
  12. 台达PLC与台达DTE8路温控程序,威纶通触摸屏与温控器modbus485通讯
  13. js获取浏览器高度 宽度
  14. GB28181 视频服务器文档整理
  15. 嵌入式linux培训教程,嵌入式Linux开发学习之Linux文件系统学习
  16. 23种设计模式-观察者模式
  17. Java中的函数(方法)
  18. 关于何如在英伟达官网上下载历史驱动的方法
  19. 让应用程序禁止Windows屏幕保护
  20. idc云计算机房建设标准,新《数据中心设计规范》GB50174-2017标准明年实施

热门文章

  1. 电动汽车充电站与换电站协调路径规划
  2. 【目标检测】研究生第二次组会汇报PPT(初稿)
  3. 最喜欢的课程的英语作文计算机,我最喜欢的课程英语作文(2)
  4. 抽奖抽奖-乐高礼盒!!
  5. 【睡服】面试官的高质量自动化测试工程师简历--看完必有所获
  6. Linphone架构及功能分析
  7. 飞塔Fortinet网络安全专家NSE4-ppt-01-Fortinet统一威胁管理介绍(UTM)
  8. 配套规则再细化,科创板进入最后冲刺阶段
  9. 一个好用的记事本备忘录微信小程序
  10. 10个提升工作效率的Secure CRT小窍门 - 你玩转了几个?