MySQL 数据库 CSV 导入指定编码的彻底乱码解决实战

MySQL 数据库阿木 发布于 2025-07-08 12 次阅读


摘要:

在数据迁移和数据库管理过程中,CSV文件导入MySQL数据库时遇到乱码问题是一个常见且棘手的问题。本文将围绕这一主题,通过实际代码示例,详细解析如何解决CSV文件在导入MySQL数据库时出现的指定编码乱码问题。

一、

CSV(Comma-Separated Values,逗号分隔值)是一种常用的数据交换格式,广泛应用于数据存储和传输。在将CSV文件导入MySQL数据库时,由于编码不一致,常常会出现乱码问题。本文将结合Python编程语言和MySQL数据库,详细讲解如何解决CSV导入MySQL时指定编码的乱码问题。

二、环境准备

1. Python环境:Python 3.x

2. MySQL数据库:MySQL 5.7及以上版本

3. 数据库连接库:pymysql或MySQLdb

三、解决乱码问题的步骤

1. 读取CSV文件

2. 转换编码

3. 连接MySQL数据库

4. 创建表

5. 插入数据

6. 关闭数据库连接

四、代码实现

以下是一个Python脚本示例,用于解决CSV导入MySQL数据库时指定编码的乱码问题。

python

import pymysql


import csv

1. 读取CSV文件


def read_csv(file_path, encoding='utf-8'):


with open(file_path, mode='r', encoding=encoding) as f:


reader = csv.reader(f)


data = list(reader)


return data

2. 转换编码


def convert_encoding(data, target_encoding='utf-8'):


for row in data:


for i, item in enumerate(row):


row[i] = item.encode('gbk').decode(target_encoding)


return data

3. 连接MySQL数据库


def connect_mysql(host, user, password, database):


connection = pymysql.connect(host=host, user=user, password=password, database=database)


return connection

4. 创建表


def create_table(connection, table_name, data):


cursor = connection.cursor()


columns = ', '.join([f'`{item}` VARCHAR(255)' for item in data[0]])


sql = f"CREATE TABLE IF NOT EXISTS {table_name} ({columns})"


cursor.execute(sql)


connection.commit()

5. 插入数据


def insert_data(connection, table_name, data):


cursor = connection.cursor()


columns = ', '.join(data[0])


placeholders = ', '.join(['%s'] len(data[0]))


sql = f"INSERT INTO {table_name} ({columns}) VALUES ({placeholders})"


for row in data[1:]:


cursor.execute(sql, row)


connection.commit()

6. 关闭数据库连接


def close_connection(connection):


connection.close()

主程序


if __name__ == '__main__':


file_path = 'data.csv' CSV文件路径


host = 'localhost' MySQL服务器地址


user = 'root' MySQL用户名


password = 'password' MySQL密码


database = 'test' 数据库名


table_name = 'test_table' 表名

读取CSV文件


data = read_csv(file_path)


转换编码


data = convert_encoding(data)


连接MySQL数据库


connection = connect_mysql(host, user, password, database)


创建表


create_table(connection, table_name, data)


插入数据


insert_data(connection, table_name, data)


关闭数据库连接


close_connection(connection)


五、总结

本文通过Python编程语言和MySQL数据库,详细讲解了如何解决CSV导入MySQL数据库时指定编码的乱码问题。在实际应用中,可以根据实际情况调整编码类型和数据库连接参数。希望本文能对您在实际工作中解决CSV导入乱码问题有所帮助。