欢迎关注微信公众号:数据科学与艺术 作者WX:superhe199
MySQL每次最大插入条数是由参数max_allowed_packet
控制的,默认值为4MB。这意味着每次插入的数据大小不能超过4MB。
下面是一个案例分析和代码实现的示例:
假设我们有一个名为employees
的表,该表有三个字段:id
、name
和salary
。
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
我们想要一次性插入1000条员工记录到该表中。
案例分析:
- 我们需要生成1000条员工记录的数据。可以使用随机数生成器或者从其他数据源获取。
- 使用MySQL的
INSERT INTO
语句将这些记录插入到employees
表中。 - 由于MySQL每次最大插入条数是受
max_allowed_packet
参数限制的,如果一次插入的数据量超过4MB,会导致插入失败。因此,我们需要将1000条记录拆分成多个小批量插入的操作。
代码实现:
import mysql.connector
def insert_employees(employees):
conn = mysql.connector.connect(
host="localhost",
user="root",
password="your_password",
database="your_database"
)
cursor = conn.cursor()
for employee in employees:
# 将每条记录插入到employees表中
cursor.execute("INSERT INTO employees (name, salary) VALUES (%s, %s)", employee)
conn.commit()
cursor.close()
conn.close()
def split_employees(employees, batch_size):
for i in range(0, len(employees), batch_size):
batch = employees[i:i + batch_size]
insert_employees(batch)
employees = [
("John Smith", 5000),
("Jane Doe", 6000),
# 省略剩余的员工记录
# ...
]
batch_size = 100 # 定义每次插入的批量大小
split_employees(employees, batch_size)
实现了将1000条员工记录插入到employees
表中的功能,并且将插入操作拆分成了多个小批量插入的操作,以满足MySQL每次最大插入条数的限制。