MySQL导入大量CSV数据

MySQL是一个开源的关系型数据库管理系统,广泛应用于各种Web应用程序中。在实际应用中,我们经常需要将大量的数据导入到MySQL数据库中,其中一种常见的格式就是CSV(逗号分隔值)文件。

本文将介绍如何使用MySQL的命令行工具和Python编程语言来导入大量的CSV数据。

准备工作

在开始导入之前,我们需要确保MySQL数据库已经正确安装并且可用。如果你还没有安装MySQL,可以通过以下步骤进行安装:

  1. 下载MySQL Community Server:在MySQL官方网站上找到适合您操作系统的版本,并下载安装程序。
  2. 安装MySQL Server:运行安装程序,并按照指示完成安装过程。
  3. 启动MySQL Server:安装完成后,启动MySQL Server服务。

此外,我们还需要准备一个CSV文件,该文件包含要导入的数据。假设我们有一个名为students.csv的文件,包含以下内容:

id,name,age,gender
1,John Smith,20,Male
2,Jane Doe,21,Female
3,Michael Johnson,19,Male
4,Emily Brown,20,Female

上述文件包含了学生的ID、姓名、年龄和性别等信息。

使用MySQL命令行工具导入CSV数据

MySQL提供了一个命令行工具mysqlimport,可用于从CSV文件导入数据到MySQL数据库。该工具的语法如下:

mysqlimport [options] db_name textfile1 [textfile2 ...]

其中,db_name是要导入数据的数据库名称,textfile1, textfile2等是要导入的CSV文件名。

以下是一个示例命令,用于将students.csv导入到名为mydb的数据库中:

mysqlimport --local --fields-terminated-by=, --lines-terminated-by='\n' -u root -p mydb students.csv

解释一下上述命令的各个参数:

  • --local:指示mysqlimport从本地文件系统读取文件(而不是从远程主机)。
  • --fields-terminated-by=,:指示字段以逗号分隔。
  • --lines-terminated-by='\n':指示行以换行符结束。
  • -u root:以root用户身份连接到MySQL服务器。
  • -p:提示输入密码,以进行身份验证。
  • mydb:要导入数据的数据库名称。
  • students.csv:要导入的CSV文件名。

运行上述命令后,MySQL将读取CSV文件并将其内容插入到mydb数据库的students表中。

使用Python导入CSV数据

除了使用命令行工具,我们还可以使用Python编程语言来导入CSV数据。Python提供了一个名为csv的内置模块,可用于读取和解析CSV文件。

以下是一个示例代码,使用Python导入students.csv文件:

import csv
import pymysql

# 连接到MySQL数据库
connection = pymysql.connect(host='localhost',
                             user='root',
                             password='password',
                             database='mydb')

# 创建游标对象
cursor = connection.cursor()

# 打开CSV文件
with open('students.csv', 'r') as file:
    # 创建CSV读取器
    reader = csv.reader(file)

    # 遍历每一行数据
    for row in reader:
        # 提取每个字段的值
        id = row[0]
        name = row[1]
        age = row[2]
        gender = row[3]

        # 构造SQL语句
        sql = f"INSERT INTO students (id, name, age, gender) VALUES ('{id}', '{name}', '{age}', '{gender}')"

        # 执行SQL语句
        cursor.execute(sql)

# 提交事务
connection.commit()

# 关闭游标和连接
cursor.close()
connection.close()

上述代码首先导入了csvpymysql模块,然后连接到MySQL数据库。接下来,我们打开CSV文件并创建一个CSV读取器。通过遍历每一行数据,我们可以提取每个字段的值,并使用这些值构造SQL语句。最后,我们执行SQL语句并提交事务。

结论