MySQL 批量写入表是指一次性向数据库表中插入多条记录的操作。相比于逐条插入记录,批量写入可以显著提高数据插入的效率。
MySQL 提供了多种批量写入的方式,包括:
INSERT INTO ... VALUES
语法:INSERT INTO table_name (column1, column2, ...)
VALUES
(value1, value2, ...),
(value3, value4, ...),
...
(valueN, valueM, ...);
INSERT INTO ... SELECT
语法:INSERT INTO table_name (column1, column2, ...)
SELECT column1, column2, ...
FROM another_table
WHERE condition;
批量写入适用于以下场景:
原因:可能是 SQL 语句格式不正确,或者在插入的数据中包含了非法字符。
解决方法:
原因:
解决方法:
原因:插入的数据中存在重复的主键值。
解决方法:
INSERT IGNORE
或 REPLACE INTO
语法来处理主键冲突。-- 使用 INSERT IGNORE 忽略主键冲突
INSERT IGNORE INTO table_name (column1, column2, ...)
VALUES
(value1, value2, ...),
(value3, value4, ...),
...
(valueN, valueM, ...);
-- 使用 REPLACE INTO 替换主键冲突的记录
REPLACE INTO table_name (column1, column2, ...)
VALUES
(value1, value2, ...),
(value3, value4, ...),
...
(valueN, valueM, ...);
以下是一个使用 Python 和 MySQL 进行批量写入的示例代码:
import mysql.connector
# 连接数据库
db = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="yourdatabase"
)
cursor = db.cursor()
# 批量插入数据
sql = "INSERT INTO table_name (column1, column2) VALUES (%s, %s)"
val = [
('value1', 'value2'),
('value3', 'value4'),
('value5', 'value6')
]
cursor.executemany(sql, val)
# 提交事务
db.commit()
# 关闭连接
cursor.close()
db.close()
领取专属 10元无门槛券
手把手带您无忧上云