1. 引言
在开发引言程序时,经常会遇到要向数据库批量写入大量数据的场景,如数据初始化、数据迁移或者从外部系统导入数据等。传统的逐条插入方式在数据量较大时,性能会变得非常低下,因为每一次插入操作都需要与数据库建立连接、进行 SQL 解析和执行等一系列开销较大的操作。
MyBatis-Plus
作为一款优秀的 MyBatis
增强工具,为我们提供了多种数据操作方式,同时结合数据库自身的特性,如LOAD DATA
语句,可以极大地提升批量写入数据的效率
2. 数据库LOAD DATA特性介绍
LOAD DATA是Mysql等数据库提供的一种高效的数据倒入语句,它允许从一个文本文件中快速地将数据加载到数据库表中,与传统的Insert语句相比,LOAD DATA具有以下优势:
- 速度快:
LOAD DATA
是基于文件系统的操作,直接将文件的数据批量加载到数据库表中,避免了多次网络传输和SQL解析的开销,在处理大数据时,速度比逐条INSERT语句快很多倍
- 减少事务开销: 传统的INSERT操作如果放在一个事务中,随着数据量的增加,事务的持续时间会变长,占用数据库资源。而LOAD DATA可以在短时间内完成大量数据的插入,减少了事务的持续时间,降低了锁竞争的可能性
例如:在Mysql中,LOAD DATA的基本语法
1 | LOAD DATA [LOCAL] INFILE 'file_name' |
file_name
: 要倒入数据的文本文件路径table_name
: 目标数据库表FIELDS TERMINATED By
: 指定字段之间的分割符LINE TERMINATED BY
指定行之间的分割符IGNORE number LINES
: 表示忽略文件开头的指定行数column_list
: 指定要倒入数据对应的表列