MySQL SELECT 导出 CSV 是指从 MySQL 数据库中查询数据,并将结果以 CSV(逗号分隔值)格式导出到文件中。CSV 格式是一种常见的数据交换格式,易于阅读和导入到其他应用程序中。
mysqldump 或 SELECT ... INTO OUTFILE 语句。SELECT ... INTO OUTFILE 语句SELECT * INTO OUTFILE '/path/to/output.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM your_table;mysqldump 命令mysqldump -u username -p database_name table_name --fields-terminated-by=',' --fields-enclosed-by='"' --lines-terminated-by='\n' > output.csvimport mysql.connector
import csv
# 连接数据库
cnx = mysql.connector.connect(user='username', password='password', host='host', database='database_name')
cursor = cnx.cursor()
# 查询数据
query = "SELECT * FROM your_table"
cursor.execute(query)
# 导出为 CSV 文件
with open('output.csv', 'w', newline='') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerow([i[0] for i in cursor.description]) # 写入列名
csvwriter.writerows(cursor)
# 关闭连接
cursor.close()
cnx.close()原因:MySQL 用户没有足够的权限在指定目录下创建文件。
解决方法:
chown 和 chmod 命令更改目录权限。sudo chown mysql:mysql /path/to/output
sudo chmod 755 /path/to/output原因:MySQL 数据库和 CSV 文件的字符编码不一致。
解决方法:
SELECT ... INTO OUTFILE 语句中指定字符集。SELECT * INTO OUTFILE '/path/to/output.csv'
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM your_table;import mysql.connector
import csv
# 连接数据库
cnx = mysql.connector.connect(user='username', password='password', host='host', database='database_name', charset='utf8mb4')
cursor = cnx.cursor()
# 查询数据
query = "SELECT * FROM your_table"
cursor.execute(query)
# 导出为 CSV 文件
with open('output.csv', 'w', newline='', encoding='utf-8-sig') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerow([i[0] for i in cursor.description]) # 写入列名
csvwriter.writerows(cursor)
# 关闭连接
cursor.close()
cnx.close()希望这些信息对你有所帮助!
没有搜到相关的沙龙