CSV批量导入MySQL的高效方式(csv分批写入mysql)
CSV批量导入MySQL的高效方式
对于大量数据的存储和管理,MySQL是一种可靠的选择。而CSV文件则是一种普遍使用的数据格式,它可以轻松地转换到MySQL数据库中。然而,在实际应用中,如何高效地将大量的CSV文件批量导入MySQL数据库中却是一个棘手的问题。在本文中,我们将介绍一种高效的CSV批量导入MySQL的方法,并提供一些实用的代码示例。
步骤1:创建MySQL表结构并添加索引
在导入CSV文件之前,我们需要先创建MySQL表结构。同时,为了提高查询效率,建议添加索引,特别是在导入大量数据时。
举个例子:
我们创建一个名为“students”的表,其中包含了id、name、age、gender、major等字段。为了提高查询效率,我们在“id”和“name”字段上添加了索引。
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
gender VARCHAR(10),
major VARCHAR(50)
);
ALTER TABLE students ADD INDEX id_index (id);
ALTER TABLE students ADD INDEX name_index (name);
步骤2:编写Python脚本
在Python 3.x环境下,我们可以通过pandas库来读取CSV文件数据,并使用MySQLdb库将数据批量导入到MySQL数据库中。下面是一个示例代码:
import pandas as pd
import MySQLdb
# 读取CSV文件数据
data = pd.read_csv(‘students.csv’)
# 建立MySQL连接
conn = MySQLdb.connect(
host=”localhost”,
port=3306,
user=”root”,
passwd=”password”,
db=”test”,
charset=”utf8″
)
# 获取游标
cur = conn.cursor()
# 批量导入数据
for index, row in data.iterrows():
sql = “INSERT INTO students (id, name, age, gender, major) VALUES (%s, %s, %s, %s, %s)”
values = (row[‘id’], row[‘name’], row[‘age’], row[‘gender’], row[‘major’])
cur.execute(sql, values)
# 提交事务
conn.commit()
# 关闭连接
cur.close()
conn.close()
步骤3:执行Python脚本
将脚本保存为import_csv_to_mysql.py文件,并执行以下命令:
$ python import_csv_to_mysql.py
如果一切正常,我们就会看到MySQL数据库中已成功导入CSV文件数据的提示。
总结
通过使用pandas库和MySQLdb库,我们可以快速高效地批量导入CSV文件数据到MySQL数据库中。同时,在导入数据之前,我们还可以考虑为MySQL表添加索引,以提高查询效率。这种方法适用于批量导入大量的CSV文件数据,具有较高的效率和可靠性。