MySQL表数据批量添加是指一次性向数据库表中插入多条记录的操作。相比于逐条插入数据,批量添加可以显著提高数据插入的效率。
INSERT INTO ... VALUES
语句:INSERT INTO ... VALUES
语句:LOAD DATA INFILE
语句:
适用于从文件中批量导入数据。LOAD DATA INFILE
语句:
适用于从文件中批量导入数据。Duplicate entry
错误原因:插入的数据中存在重复的主键或唯一索引值。
解决方法:
INSERT IGNORE
语句忽略重复的记录。INSERT IGNORE
语句忽略重复的记录。ON DUPLICATE KEY UPDATE
语句更新重复的记录。ON DUPLICATE KEY UPDATE
语句更新重复的记录。原因:可能是由于网络延迟、数据库负载过高或SQL语句编写不当等原因。
解决方法:
innodb_buffer_pool_size
、innodb_log_file_size
等,以提高性能。以下是一个使用Python和MySQL Connector库进行批量插入的示例:
import mysql.connector
# 连接到MySQL数据库
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="yourdatabase"
)
mycursor = mydb.cursor()
# 准备要插入的数据
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = [
('John', 'Highway 21'),
('Peter', 'Lowstreet 4'),
('Amy', 'Apple st 652'),
('Hannah', 'Mountain 21'),
('Michael', 'Valley 345'),
('Sandy', 'Ocean blvd 2'),
('Betty', 'Green Grass 1'),
('Richard', 'Sky st 331'),
('Susan', 'One way 98'),
('Vicky', 'Yellow Garden 2'),
('Ben', 'Park Lane 38'),
('William', 'Central st 954'),
('Chuck', 'Main Road 989'),
('Viola', 'Sideway 1633')
]
# 执行批量插入
mycursor.executemany(sql, val)
# 提交事务
mydb.commit()
print(mycursor.rowcount, "记录插入成功。")
领取专属 10元无门槛券
手把手带您无忧上云