MySQL 批量插入 SQL 语句指南
在数据库操作中,尤其是在处理大量数据时,INSERT INTO
语句是最常用的,一次性将所有数据加载到表中的方法可能不是最高效的选择,为了提高性能和减少网络传输的开销,我们可以使用 BULK INSERT
或者更现代的 LOAD DATA INFILE
(在某些版本的 MySQL 中可用)等工具来实现批量插入。
使用 BULK INSERT 插入大量数据
BULK INSERT
是一种非常高效的方法来批量导入大量数据到表中,它适用于需要从外部文件或字符串列表中插入大量数据的情况,以下是一个基本的例子:
BULK INSERT 表名 FROM '路径/文件.txt' WITH ( FIELDTERMINATOR = '\t', -- 标识字段之间的分隔符,默认为逗号 ROWTERMINATOR = '\n', -- 标识行之间的分隔符,默认为空行 FIRSTROW = 2 -- 指定第一行开始记录的行数,如果第一行包含标题,则默认为1 );
在这个例子中:
表名
是你要插入数据的表名。'路径/文件.txt'
是你的数据文件路径。FIELDTERMINATOR
和ROWTERMINATOR
参数分别指定了字段之间和行之间的分隔符,这里的\t
表示制表符,\n
表示换行符。FIRSTROW = 2
表示文件的第一行是标题行,第二行开始才是实际的数据行。
使用 LOAD DATA INFILE 插入大量数据
LOAD DATA INFILE
是另一种可以用于批量插入数据的方法,虽然它的功能比 BULK INSERT
更简单,但它依赖于 MySQL 的支持,并且不适用于所有版本的 MySQL。
LOAD DATA LOCAL INFILE '路径/文件.csv' INTO TABLE 表名 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;
这个命令的工作原理如下:
LOCAL
模式允许你从本地文件中读取数据而不是从远程服务器。FIELDS TERMINATED BY ','
指定了字段之间的分隔符为逗号。OPTIONALLY ENCLOSED BY '"'
指定了字段被双引号包围的情况。LINES TERMINATED BY '\n'
指定了行结束符为换行符。IGNORE 1 LINES
忽略文件的第一行,因为它通常包含表结构信息。
批量插入 MySQL 数据是一种优化查询效率、减少网络负载的好方法,无论是通过 BULK INSERT
还是 LOAD DATA INFILE
,选择合适的方法取决于你的具体需求和数据来源,了解这些工具如何工作可以帮助你在处理大数据集时提高效率。