MySQL批量入库是指一次性将多条记录插入到数据库表中的操作。相比于逐条插入记录,批量入库可以显著提高数据插入的效率。
MySQL批量入库主要有两种方式:
INSERT INTO ... VALUES (...), (...), ...
语法:INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...),
(value3, value4, ...),
...
LOAD DATA INFILE
语法:适用于从文件中批量导入数据。LOAD DATA INFILE 'file_path'
INTO TABLE table_name
FIELDS TERMINATED BY 'delimiter'
ENCLOSED BY 'enclosure'
LINES TERMINATED BY 'line_terminator'
IGNORE number LINES;
批量入库常用于以下场景:
ERROR 1062 (23000): Duplicate entry
错误原因:插入的数据中存在重复的主键或唯一键值。
解决方法:
INSERT IGNORE
或REPLACE INTO
语句来处理重复键值。INSERT IGNORE INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...),
(value3, value4, ...),
...;
或
REPLACE INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...),
(value3, value4, ...),
...;
ERROR 2006 (HY000): MySQL server has gone away
错误原因:插入的数据量过大,导致MySQL服务器断开连接。
解决方法:
max_allowed_packet
参数值。SET GLOBAL max_allowed_packet = 128 * 1024 * 1024; -- 设置为128MB
原因:插入的数据量过大,或者数据库配置不当。
解决方法:
LOAD DATA INFILE
语法进行批量导入,该方式通常比INSERT INTO ... VALUES (...)
语法更快。假设有一个表users
,结构如下:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE
);
批量插入数据的示例代码:
INSERT INTO users (name, email)
VALUES ('Alice', 'alice@example.com'),
('Bob', 'bob@example.com'),
('Charlie', 'charlie@example.com');
希望以上信息对你有所帮助!如果有其他问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云