TXT数据批量导入MySQL是指将存储在文本文件(TXT格式)中的数据批量导入到MySQL数据库中。这种操作通常用于数据迁移、数据备份恢复、数据初始化等场景。
LOAD DATA INFILE语句。原因:TXT文件中的数据格式与MySQL表结构不匹配。
解决方法:
LOAD DATA INFILE语句时,指定正确的分隔符和字段类型。LOAD DATA INFILE 'data.txt'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;原因:执行导入操作的用户没有足够的权限。
解决方法:
FILE权限。GRANT FILE ON *.* TO 'username'@'localhost';原因:导入的数据量过大,导致内存不足或超时。
解决方法:
LOAD DATA INFILE语句时,可以分批次导入数据。innodb_buffer_pool_size和max_allowed_packet。SET GLOBAL innodb_buffer_pool_size = 2G;
SET GLOBAL max_allowed_packet = 64M;原因:TXT文件和MySQL数据库的字符编码不一致。
解决方法:
CONVERT函数或CHARSET参数进行编码转换。LOAD DATA INFILE 'data.txt' CHARACTER SET utf8mb4
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;import mysql.connector
# 连接数据库
conn = mysql.connector.connect(
host='localhost',
user='username',
password='password',
database='database_name'
)
cursor = conn.cursor()
# 读取TXT文件并批量插入数据
with open('data.txt', 'r', encoding='utf-8') as file:
lines = file.readlines()
for line in lines:
data = line.strip().split(',')
query = "INSERT INTO table_name (column1, column2, column3) VALUES (%s, %s, %s)"
cursor.execute(query, data)
# 提交事务并关闭连接
conn.commit()
cursor.close()
conn.close()希望以上信息对你有所帮助!如果有其他问题,请随时提问。