MySQL 批量导入 CSV 文件是指将 CSV 格式的数据文件导入到 MySQL 数据库中。CSV(Comma-Separated Values)是一种常见的数据交换格式,每行代表一条记录,字段之间用逗号分隔。
LOAD DATA INFILE
命令:这是 MySQL 提供的原生命令,可以直接从文件系统导入 CSV 文件。mysqlimport
工具:这是一个命令行工具,专门用于导入数据。原因:文件路径不正确或文件权限不足。
解决方法:
LOAD DATA INFILE '/path/to/your/file.csv'
INTO TABLE your_table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
确保文件路径正确,并且 MySQL 用户有权限访问该文件。
原因:CSV 文件中的字段数与数据库表中的字段数不匹配。
解决方法:
LOAD DATA INFILE '/path/to/your/file.csv'
INTO TABLE your_table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES; -- 忽略 CSV 文件的第一行(通常是标题行)
确保 CSV 文件的字段数与数据库表的字段数一致,或者使用 IGNORE
或 REPLACE
选项处理标题行。
原因:CSV 文件的字符集与数据库的字符集不匹配。
解决方法:
SET NAMES 'utf8mb4';
LOAD DATA INFILE '/path/to/your/file.csv'
INTO TABLE your_table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
确保 CSV 文件和数据库使用相同的字符集,或者在导入前设置正确的字符集。
以下是一个使用 Python 脚本批量导入 CSV 文件到 MySQL 的示例:
import mysql.connector
import csv
# 连接到 MySQL 数据库
db = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",
database="your_database"
)
cursor = db.cursor()
# 打开 CSV 文件
with open('file.csv', newline='') as csvfile:
reader = csv.reader(csvfile)
next(reader) # 忽略标题行
for row in reader:
# 构建插入语句
sql = "INSERT INTO your_table (column1, column2, column3) VALUES (%s, %s, %s)"
cursor.execute(sql, row)
# 提交事务
db.commit()
# 关闭连接
cursor.close()
db.close()
希望这些信息对你有所帮助!如果有更多具体问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云