如何将 CSV 文件导入 MySQL 数据库中的表中

Gustavo du Mortier 2023年1月30日 2020年11月24日
  1. LOAD DATA INFILE SQL 将 CSV 导入到 MySQL 中
  2. 使用 HeidiSQL 向 MySQL 导入 CSV 文件
如何将 CSV 文件导入 MySQL 数据库中的表中

本教程文章将介绍两种从逗号分隔值(CSV)文件中导入数据到 MySQL 数据库并插入到表中的方法。

我们将介绍将 CSV 文件导入 MySQL 的不同方法。这个任务可以通过执行一系列 SQL 命令,以编程的方式完成;也可以通过交互式的方式,使用图形化 MySQL 客户端的文件导入对话框,如 HeidiSQL。

LOAD DATA INFILE SQL 将 CSV 导入到 MySQL 中

我们先来看看如何使用 LOAD DATA INFILE SQL 语句来程序化地导入 CSV 文件。

在导入文件之前,需要先创建包含导入数据的表。假设你的 CSV 文件包含图书信息,分为 ISBN、Title、Author 和 ListPrice 字段。要创建这样一个表,你需要执行这样的命令。

CREATE TABLE BooksCSV (
    ISBN VARCHAR(255) NULL,
    title VARCHAR(255) NULL,
    author VARCHAR(255) NULL,
    ListPrice VARCHAR(255) NULL
);

建议所有的字段都接纳 NULL 值,并且表没有主键,因为事先并不知道 CSV 文件中的数据是否完整和规范。

另一个建议是,即使是数字数据,也只使用 VARCHAR 字段,以防止文件中的数据格式不正确而导致处理错误。导入数据后,可以直接在数据库中进行清理,读取表的数,并进行必要的验证和修正。

有了数据的目标表后,需要确定 CSV 文件的路径。假设该文件的完整路径是 C:\csvdata\books.csv。那么,要将该文件导入到你的表中,你应该执行命令。

LOAD DATA
INFILE 'c:/csvdata/books.csv'
INTO TABLE BooksCSV ` 

LOAD DATA INFILE 语句要求你指定源文件和目标表。也可以选择指定其他参数,如字段分隔符、文本限定符和是否存在标题行。

在下面的例子中,添加的参数指定字段用逗号分隔,字符串用双引号括起来,第一行必须被忽略,因为它包含列标题。

LOAD DATA
INFILE 'c:/csvdata/books.csv'
INTO TABLE BooksCSV 
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
IGNORE 1 ROWS;

现在,你知道如何在 MySQL 中以编程方式导入 CSV 文件了。

使用 HeidiSQL 向 MySQL 导入 CSV 文件

我们来看看如何使用图形化的 MySQL 客户端(如 HeidiSQL)进行交互式操作。

步骤和我们上面看到的一样。

  • 创建表
  • 将文件的内容导入其中。

使用 HeidiSQL 创建表时,需要将客户端连接到 MySQL 服务器,选择要导入数据的数据库。然后点击数据库上的右键,选择创建新的-表选项。

mysql 导入 csv 截图 1

你必须在相应的字段中输入表的名称并添加列。要添加一个列,点击+ 按钮,并输入其名称和数据类型。

在本例中,表的名称为 BooksCSV,字段与我们在前面的例子中使用的相同。

完成添加列后,单击保存在数据库中创建表。

创建完表后,就可以从 CSV 文件中导入数据了。但是在启动导入过程之前,你需要通过改变客户端和服务器组件的启动参数,启用在客户端和服务器组件上加载本地数据。在启用加载本地数据时,你必须考虑到一些安全因素。要了解更多关于它们的信息,请阅读 MySQL 官方文档中的本文

当你准备好导入 CSV 文件时,进入 HeidiSQL 的工具菜单,选择导入 CSV 文件选项。你必须指定要导入的 CSV 文件路径,并选择要插入导入数据的数据库和表。如果表中的字段和文件上的字段一样多,可以取消选中表字段。最后,点击 导入!,这个过程就会开始。

mysql 导入 csv 截图 2

为了执行导入,图形界面会发出与我们之前描述的程序化选项相同的 LOAD DATA 命令,所以最终的结果几乎是一样的-数据库表将被从 CSV 文件中读取的数据填充。

关于使用 LOAD DATA 语句的更多信息,请查看 MySQL 官方文档中的本文

相关文章 - MySQL Import