mysql快速插入大量数据的正确方法

 更新时间:2024年01月15日 10:44:25   作者:菜鸟_cc  
在处理大量数据时如果一条一条地插入会极大地影响效率,因此批量插入是一个更好的选择,下面这篇文章主要给大家介绍了关于mysql快速插入大量数据的正确方法,需要的朋友可以参考下

前言

最近做性能测试,需要模拟生产环境的数据量,在造百万、千万级数据的时候发现直接使用插入sql效率极低,百度了一翻,找到几种方式,但用下来还是有很快速的方式,推荐第四种

插入mysql数据效率对比

1.单行插入

insert into tableName (colunm1,colunm2,...) value(value1,value2,...);

没错,很普通的一条sql,插入速度也很普通,不推荐

2.多行插入

insert into tableName(colunm1,colunm2,..) values(value1,value2...),(value1,value2...);

有点点进度,但是不多,多行插入可以减少插入数据时的IO和网络开销,从而加快插入数据的速度。此方法适用于插入少量数据的情况,当插入数据量变大时,数据库连接可能会被打满

3.批量插入

INSERT INTO table_name (column1, column2, column3)
VALUES
(value1, value2, value3),
(value4, value5, value6),
......
ON DUPLICATE KEY UPDATE column1=VALUES(column1), column2=VALUES(column2), column3=VALUES(column3);

这个操作将所有插入放在一个事务中,并将其视为一个操作。此方法使用一次SQL查询来插入大量数据,因此减少了IO和网络开销

4.使用LOAD DATA INFILE语句

LOAD DATA INFILE 'file_name'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

使用LOAD DATA INFILE语句可以将大量的数据快速地导入MySQL中。此方法适用于数据已存储在文件中的情况,您只需指定文件名和目标表即可导入数据。而且,此方法支持多线程操作,可在不阻塞数据库的同时并行地导入数据

说实话,这种方式非常香,亲测500W数据1分钟插入完成,推荐file_name: 本地存储数据的文件

这个文件的数据需要先准备好,你也可以选择像我一样代码生成

  • 首先,从数据库复制一条数据

  • 然后把复制出来的插入sql中value里的内容抠出来
  • 抠出来的内容注意下是否有外键、主键,如果有要处理一下扣出来的内容,下面的例子是id是主键,我给去掉了,然后循环生成主键拼接上去,循环生成的值要符合数据库的字段定义类型
data = ",860272,'2023-07-26 18:00:03','2023-07-26 18:00:03',1,未完成,时,1,1时,219,85,1,001-001,0,9784,'2023-07-26 18:00:03',9784,'2023-07-26 18:00:03'"
with open('demo.txt', 'w+', encoding='utf-8') as f:
    for i in range(0, 1000000):
        f.write(str(i + 1) + data + '\n')
  • 执行后生成demo.txt文件,每一行不同的值逗号分隔

  • 最后,连接数据库,可以使用命令连接,也可以借助工具连接,执行命令
LOAD DATA LOCAL INFILE 'E:\\demo.txt' INTO TABLE 表名
FIELDS TERMINATED BY ',' ('列名1','列名2','列名3','列名4')

注意:你的txt的值要跟命令中的列名对应上,如果你是全字段的值插入,那么('列名1','列名2','列名3','列名4')可以省略不写

好了,可以享受插入数据的快乐了…

总结

到此这篇关于mysql快速插入大量数据的正确方法的文章就介绍到这了,更多相关mysql快速插入大量数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql 8.0.15 下载安装详细教程 新手必备!

    mysql 8.0.15 下载安装详细教程 新手必备!

    这篇文章主要为大家详细介绍了mysql 8.0.15 下载安装详细教程,纯新手教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Ubuntu下完美实现迁移MySQL数据库位置

    Ubuntu下完美实现迁移MySQL数据库位置

    这篇文章主要介绍了Ubuntu下完美实现迁移MySQL数据库位置,十分详细,有需要的小伙伴可以参考下
    2015-03-03
  • Linux下修改MySQL编码的方法

    Linux下修改MySQL编码的方法

    有时候因为编码需要修改mysql的编码,windows下修改有图文界面简单一些,linux大家就可以参考下面的方法
    2012-04-04
  • Mysql优化策略(推荐)

    Mysql优化策略(推荐)

    这篇文章主要介绍了Mysql优化策略,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • MySQL中空值Null和空字符‘‘的具体使用

    MySQL中空值Null和空字符‘‘的具体使用

    本文主要介绍了MySQL中空值Null和空字符''的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • MySQL AUTO_INCREMENT 主键自增长的实现

    MySQL AUTO_INCREMENT 主键自增长的实现

    本文主要介绍了MySQL AUTO_INCREMENT 主键自增长的实现,每增加一条记录,主键会自动以相同的步长进行增长,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • MySQL聚合查询与联合查询操作实例

    MySQL聚合查询与联合查询操作实例

    这篇文章主要给大家介绍了关于MySQL聚合查询与联合查询操作的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友可以参考下
    2022-02-02
  • MySQL 5.6.14 win32安装方法(zip版)

    MySQL 5.6.14 win32安装方法(zip版)

    这篇文章主要介绍了MySQL 5.6.14 win32安装方法(zip版)的相关资料,非常不错,需要的朋友可以参考下
    2016-08-08
  • mysql开启远程连接(mysql开启远程访问)

    mysql开启远程连接(mysql开启远程访问)

    开启MYSQL远程连接权限的方法,大家参考使用吧
    2013-12-12
  • DQL数据查询语句使用示例

    DQL数据查询语句使用示例

    DQL(Data Query Language 数据查询语言):用于查询数据库对象中所包含的数据。DQL语言主要的语句:SELECT语句。DQL语言是数据库语言中最核心、最重要的语句,也是使用频率最高的语句
    2022-12-12

最新评论