引言
在数据处理和数据库管理中,CSV(逗号分隔值)文件是一个常见的文件格式。将CSV数据导入MySQL数据库是日常工作中常见的需求。手动操作不仅耗时费力,而且容易出错。本文将介绍如何使用Python脚本轻松实现CSV数据到MySQL数据库的导入,实现数据迁移与同步。
准备工作
在开始之前,请确保以下准备工作已完成:
- 安装Python环境。
- 安装MySQL数据库。
- 安装MySQL连接库
mysql-connector-python。
pip install mysql-connector-python
数据库连接
首先,我们需要建立与MySQL数据库的连接。以下是一个简单的示例,展示如何使用mysql-connector-python连接到MySQL数据库。
import mysql.connector
# 数据库配置
config = {
'user': 'your_username',
'password': 'your_password',
'host': 'localhost',
'database': 'your_database',
'raise_on_warnings': True,
}
# 建立连接
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()
CSV文件读取
接下来,我们需要读取CSV文件。Python的csv模块可以帮助我们轻松实现这一功能。
import csv
# CSV文件路径
csv_file_path = 'your_csv_file.csv'
# 读取CSV文件
with open(csv_file_path, mode='r', encoding='utf-8') as file:
csv_reader = csv.DictReader(file)
for row in csv_reader:
# 处理每一行数据
print(row)
数据插入
现在我们已经有了数据库连接和CSV文件数据,接下来我们需要将数据插入到MySQL数据库中。
# 表名
table_name = 'your_table_name'
# SQL插入语句
insert_query = f"INSERT INTO {table_name} ({','.join(row.keys())}) VALUES ({','.join(['%s'] * len(row.keys()))})"
# 插入数据
for row in csv_reader:
cursor.execute(insert_query, tuple(row.values()))
执行与提交
最后,我们需要执行插入操作并提交事务。
# 执行插入操作
cnx.commit()
关闭连接
完成数据导入后,关闭数据库连接。
# 关闭游标和连接
cursor.close()
cnx.close()
完整脚本
以下是一个完整的Python脚本,实现CSV数据到MySQL数据库的导入。
import mysql.connector
import csv
# 数据库配置
config = {
'user': 'your_username',
'password': 'your_password',
'host': 'localhost',
'database': 'your_database',
'raise_on_warnings': True,
}
# CSV文件路径
csv_file_path = 'your_csv_file.csv'
# 表名
table_name = 'your_table_name'
# 建立连接
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()
# 读取CSV文件
with open(csv_file_path, mode='r', encoding='utf-8') as file:
csv_reader = csv.DictReader(file)
# SQL插入语句
insert_query = f"INSERT INTO {table_name} ({','.join(row.keys())}) VALUES ({','.join(['%s'] * len(row.keys()))})"
# 插入数据
for row in csv_reader:
cursor.execute(insert_query, tuple(row.values()))
# 执行插入操作
cnx.commit()
# 关闭游标和连接
cursor.close()
cnx.close()
总结
通过本文的介绍,您现在可以轻松地将CSV数据导入MySQL数据库,实现数据迁移与同步。使用Python脚本可以大大提高工作效率,减少手动操作带来的错误。希望本文对您有所帮助!