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,选择合适的方法取决于你的具体需求和数据来源,了解这些工具如何工作可以帮助你在处理大数据集时提高效率。

上一篇