📅  最后修改于: 2023-12-03 15:11:47.315000             🧑  作者: Mango
如果您正在寻找一种自动将 CSV 文件导入到 MySQL 服务器的方法,那么您来对地方了。本文将介绍如何使用Python编写一个自动化脚本来实现此目标。
我们将使用Python编写脚本,并使用以下库:
pandas
:用于读取CSV文件和查看数据sqlalchemy
:提供了一种连接MySQL数据库的简单方法mysql-connector-python
:用于连接MySQL数据库以下是步骤的详细说明:
安装所需库
请使用以下命令安装所需库:
!pip install pandas
!pip install sqlalchemy
!pip install mysql-connector-python
导入所需库
让我们用以下代码导入所需库:
import pandas as pd
from sqlalchemy import create_engine
import mysql.connector
读取 CSV 文件
接下来,我们将使用 Pandas 库中的 read_csv()
方法读取 CSV 文件并查看其内容:
data = pd.read_csv("test.csv")
print(data.head())
输出:
id name age
0 1 Tom 21
1 2 Jack 22
2 3 Kim 23
3 4 John 24
连接到 MySQL 数据库
接下来,我们需要使用 MySQL 的用户名和密码来连接到 MySQL 服务器。我们将使用 mysql.connector
库中的 connect()
方法来进行连接:
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="mydatabase"
)
其中,
host
:MySQL 服务器地址user
:MySQL 用户名password
:MySQL 密码database
:MySQL 数据库名称创建表
接下来,我们需要使用 SQL 创建表来存储 CSV 文件中的数据。我们将使用 SQLAlchemy 库中的 create_engine()
方法来创建引擎,并使用引擎来创建表:
table_name = "test"
engine = create_engine('mysql+mysqlconnector://root:password@localhost/mydatabase', echo=False)
data.to_sql(name=table_name, con=engine, if_exists = 'replace', index=False)
其中,
table_name
:表名称engine
:数据库引擎if_exists
:指定何时写入数据,可接受的值是 append
,replace
和 fail
。在本例中,我们使用 replace
,表示如果表存在,则删除它并创建一个新表。检查结果
接下来,我们可以在 MySQL 数据库中检查表和数据是否已创建。我们可以使用以下 SQL 语句来检查:
SELECT * FROM test;
最后,以下是完整的 Python 代码片段:
import pandas as pd
from sqlalchemy import create_engine
import mysql.connector
# 读取 CSV 文件
data = pd.read_csv("test.csv")
print(data.head())
# 连接到 MySQL 数据库
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="mydatabase"
)
# 创建表
table_name = "test"
engine = create_engine('mysql+mysqlconnector://root:password@localhost/mydatabase', echo=False)
data.to_sql(name=table_name, con=engine, if_exists = 'replace', index=False)
# 检查结果
cur = mydb.cursor()
cur.execute("SELECT * FROM test;")
result = cur.fetchall()
print(result)
这就是如何使用 Python 编写自动化脚本,将 CSV 文件导入到 MySQL 服务器的步骤。希望这篇文章对您有所帮助!