MySQL 批量加载是指一次性将大量数据插入到 MySQL 数据库中的过程。相比于逐条插入数据,批量加载可以显著提高数据插入的效率,减少网络开销和数据库负载。
LOAD DATA INFILE
:这是 MySQL 提供的一个高效的文件导入命令,可以直接从文件中批量加载数据到表中。INSERT INTO ... VALUES (...), (...), ...
:通过在 INSERT
语句中列出多组值,实现批量插入。INSERT INTO ... SELECT ...
:从一个表中选择数据并插入到另一个表中,适用于数据迁移或复制。LOAD DATA INFILE
假设我们有一个 CSV 文件 data.csv
,内容如下:
id,name,age
1,Alice,30
2,Bob,25
3,Charlie,35
我们可以使用以下 SQL 语句将数据批量加载到 users
表中:
LOAD DATA INFILE '/path/to/data.csv'
INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
INSERT INTO ... VALUES (...), (...), ...
假设我们要插入多条记录到 users
表中:
INSERT INTO users (id, name, age)
VALUES (1, 'Alice', 30),
(2, 'Bob', 25),
(3, 'Charlie', 35);
ERROR 2013 (HY000): Lost connection to MySQL server during query
原因:可能是由于数据量过大,导致 MySQL 服务器在处理过程中超时。
解决方法:
max_allowed_packet
:可以通过修改 MySQL 配置文件(如 my.cnf
)来增加允许的最大数据包大小。max_allowed_packet
:可以通过修改 MySQL 配置文件(如 my.cnf
)来增加允许的最大数据包大小。innodb_buffer_pool_size
:增加 InnoDB 缓冲池的大小,以提高处理大文件的能力。innodb_buffer_pool_size
:增加 InnoDB 缓冲池的大小,以提高处理大文件的能力。通过以上方法,可以有效地解决 MySQL 批量加载过程中遇到的常见问题,提高数据插入的效率和性能。
领取专属 10元无门槛券
手把手带您无忧上云