MySQL 在数据库/表中导入CSV文件

17 Mar 2025 | 5 分钟阅读

我们如何将CSV文件导入MySQL数据库或表中?

MySQL有一个功能,允许我们将CSV文件导入数据库或表中。CSV代表**逗号分隔值**,它是一个纯文本文件,包含数据列表,并允许我们将其保存为表格格式。它主要用于在不同应用程序之间交换数据。有时它也被称为**字符分隔值**。通常,它使用逗号字符来分隔数据,但也可以使用其他字符,如分号。

当我们需要将复杂数据从一个应用程序导出到CSV文件,然后将文件数据导入到另一个应用程序时,这个文件非常有用。我们可以将CSV文件与各种电子表格程序一起使用,例如MS Excel或Google表格。CSV文件不允许保存公式。

CSV文件结构

CSV文件结构包含由逗号运算符分隔的数据列表。例如,以下数据结构可以更清楚地解释:

要导入CSV文件,我们将使用**LOAD DATA INFILE**语句。此语句用于读取文本文件并将其快速导入到数据库表中。

在将文件导入数据库表之前,我们必须确保以下事项:

  • 一个空表,文件中的数据将导入到其中。
  • 一个CSV文件,其顺序、列数和每列的数据类型与表匹配。
  • 连接到MySQL数据库服务器的用户帐户具有FILE和INSERT权限。

假设我们有一个名为**mytestdb**的数据库。现在,我们将使用以下查询在此数据库中创建一个名为**Address_Book**的空表:

现在,我们可以使用**SELECT**语句验证新创建的表是否为空,如下所示:

MySQL Import CSV File in Database/Table

接下来,我们将创建一个CSV文件。以下**address_book.csv**文件包含第一行作为列标题,其他行是要插入表中的数据。


MySQL Import CSV File in Database/Table

最后,以下语句允许我们将数据从address_book.csv导入到address_book表。

综上所述:

文件位置: 它指定CSV文件在系统中的位置。

FIELD TERMINATED BY ',': 它用于指示文件字段由逗号终止。

ENCLOSED BY '"': 它用于指定文件字段由双引号括起来。

LINES TERMINATED BY '\r\n': 它用于终止CSV文件的每一行。

IGNORE 1 ROWS: 它用于忽略CSV文件的第一行,该行包含不需要导入到表中的列标题。

我们现在可以使用SELECT语句验证新创建的表是否已填充导入的数据,如下所示。

MySQL Import CSV File in Database/Table

导入时转换数据

有时,在将CSV文件导入数据库表时,数据格式与表中的相应列不匹配。在这种情况下,我们可以使用带有LOAD DATA INFILE语句的**SET子句**来转换该列。

假设CSV文件的日期列格式为**"dd/mm/yy"**,并且在导入时与目标表的相应列不匹配。为了解决这个问题,我们需要使用**STR_TO_DATE()**函数将其转换为MySQL日期格式,如下所示:

从客户端导入CSV文件到MySQL服务器

LOAD DATA INFILE语句还允许我们将CSV文件从客户端(本地系统)导入到**远程**MySQL服务器。

当我们在LOAD DATA INFILE语句中添加**LOCAL**子句时,客户端程序可以读取本地系统上的CSV文件并将其发送到MySQL数据库服务器。此文件将上传到数据库服务器操作系统的**临时文件夹**,例如Windows上的C:\windows\temp和Linux OS上的/tmp。这些文件夹不由MySQL确定或配置。

以下语句解释得更清楚:

在上面,我们可以看到我们只在语句中添加了LOCAL选项。但是,当使用LOCAL选项导入大型CSV文件时,文件加载会稍微慢一些。这是因为此选项需要时间将文件传输到数据库服务器。

当我们使用LOCAL选项时,MySQL用户帐户不需要具有FILE权限即可导入。

LOAD DATA LOCAL INFILE语句在从本地导入文件到远程服务器时存在一些安全问题。在这种情况下,我们应该注意避免潜在的安全风险。

使用MySQL Workbench导入CSV文件

MySQL Workbench具有内置工具,允许我们将CSV文件数据导入到表中。它还帮助我们在数据库或表中进行更改之前编辑数据。

以下是将CSV文件数据导入数据库表的步骤:

步骤1: 首先,我们需要在所需的数据库中创建一个表。它确保表的列数与我们的CSV文件中的列数相同。假设我们有一个名为“address_book”的表,其中不包含任何数据,如下图所示:

MySQL Import CSV File in Database/Table

步骤2: 打开表后,我们可以使用以下屏幕中红色框中所示的**导入按钮**导入文件。

MySQL Import CSV File in Database/Table

点击导入按钮,会弹出一个窗口屏幕,我们需要选择一个CSV文件,然后点击**下一步**按钮。

MySQL Import CSV File in Database/Table

步骤3: 在下一个向导中,我们需要选择目标表并点击**下一步**按钮。这里,我们有两个选项,一个是使用现有表,另一个是创建新表。

MySQL Import CSV File in Database/Table

步骤4: 在下一个向导中,我们需要配置导入设置并点击**下一步**。

MySQL Import CSV File in Database/Table

步骤5: 在下一个向导中,我们必须监视执行过程并点击**下一步->下一步>完成**以完成该过程。

MySQL Import CSV File in Database/Table

步骤6: 我们可以通过执行SELECT查询来验证数据是否成功导入。

注意:通过上述技术,我们还可以从其他文本文件格式加载数据。