批量写入数据到MySQL是指一次性将多条记录插入到数据库中,而不是逐条插入。这种操作可以显著提高数据插入的效率,减少与数据库的交互次数。
INSERT INTO ... VALUES (...), (...), ...
语法:INSERT INTO ... VALUES (...), (...), ...
语法:LOAD DATA INFILE
语法:LOAD DATA INFILE
语法:MySQL server has gone away
错误原因:这个错误通常是由于MySQL服务器的wait_timeout
或interactive_timeout
设置过短,导致连接超时。
解决方法:
wait_timeout
和interactive_timeout
的值:wait_timeout
和interactive_timeout
的值:Duplicate entry
错误原因:插入的数据中存在重复的键值。
解决方法:
INSERT IGNORE
语句忽略重复键值错误:INSERT IGNORE
语句忽略重复键值错误:ON DUPLICATE KEY UPDATE
语句更新重复键值:ON DUPLICATE KEY UPDATE
语句更新重复键值:原因:可能是由于网络延迟、数据库服务器性能瓶颈或SQL语句优化不当。
解决方法:
以下是一个使用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, "record(s) inserted.")
希望这些信息对你有所帮助!如果有更多问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云