MySQL 导出表到 CSV

17 Mar 2025 | 6 分钟阅读

MySQL 具有将表导出到 CSV 文件的功能。CSV 文件格式是逗号分隔值,我们使用它在各种应用程序之间交换数据,例如 Microsoft Excel、Google Docs 和 Open Office。将 MySQL 数据导出为 CSV 文件格式非常有用,它允许我们以我们想要的方式分析和格式化它们。它是一个纯文本文件,可以帮助我们非常轻松地导出数据。

MySQL 提供了一种简便的方法,可以将数据库服务器中的任何表导出到 CSV 文件。在导出 MySQL 数据之前,我们必须确保以下几点:

  • MySQL 服务器进程对指定的(目标)文件夹具有读/写访问权限,该文件夹包含 CSV 文件。
  • 指定的 CSV 文件不应存在于系统中。

要将表导出到 CSV 文件,我们将使用 SELECT INTO....OUTFILE 语句。此语句是 LOAD DATA 命令的补充,用于将数据从表中写入,然后将其导出到服务器主机上的指定文件格式。它用于确保我们拥有使用此语法的权限。

我们还可以将此语法与 values 语句一起使用,将数据直接导出到文件。以下语句可以更清楚地说明这一点:

如果我们想导出所有表列,我们将使用以下语法。使用此语句,行序和数量将由 ORDER BYLIMIT 子句控制。

以上述为例,

LINES TERMINATED BY ',':用于指示文件中的行以逗号运算符分隔。文件中的每一行包含每一列的数据。

FIELDS ENCLOSED BY '"':用于指定文件字段用双引号括起来。它可以防止包含逗号分隔符的值。如果值包含在双引号中,它不会将逗号识别为分隔符。

导出文件存储位置

MySQL 中每个导出文件的存储位置存储在默认变量 secure_file_priv 中。我们可以执行以下命令来获取导出文件的默认路径。

执行后,它将给出以下结果,我们可以在其中看到此路径:C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/ 作为默认文件位置。此路径将在运行导出命令时使用。

MySQL Export Table to CSV

如果我们想更改 secure_file_priv 变量中指定的 CSV 文件的默认导出位置,我们需要编辑 my.ini 配置文件。在 Windows 平台上,此文件位于以下路径:C:\ProgramData\MySQL\MySQL Server X.Y

如果我们想导出 MySQL 数据,首先,我们需要创建一个数据库,其中至少包含一个。我们将使用此表作为示例。

我们可以通过在我们使用的编辑器中执行以下代码来创建数据库和表

如果我们执行 SELECT 语句,我们将看到以下输出:

MySQL Export Table to CSV

使用 SELECT INTO ... OUTFILE 语句将 MySQL 数据导出为 CSV 格式

要将表数据导出到 CSV 文件,我们需要执行以下查询:

我们将看到以下输出,其中我们可以看到有六行受到影响。这是因为指定的表只有六行。

MySQL Export Table to CSV

如果我们再次执行相同的语句,MySQL 将生成一个错误消息,该消息可以在下面的输出中看到:

MySQL Export Table to CSV

错误消息告诉我们,指定的​​文件名已存在于指定的位置。因此,如果我们将新的 CSV 文件导出到同一名称和位置,则无法创建它。我们可以通过删除指定位置的现有文件或重命名文件名来在同一位置创建它来解决此问题。

我们可以通过导航到指定路径来验证是否在指定位置创建了 CSV 文件:

MySQL Export Table to CSV

当我们打开这个文件时,它看起来会像下面的图片:

MySQL Export Table to CSV

在图片中,我们可以看到数字字段是用引号括起来的。我们可以通过在 ENCLOSED BY 之前添加 OPTIONALLY 子句来更改此样式。

导出带有列标题的数据

有时我们想连同列标题一起导出数据,这使得文件更方便。如果 CSV 文件的第一行包含列标题,那么导出文件就更易于理解。我们可以使用 UNION ALL 语句添加列标题,如下所示:

在此查询中,我们可以看到我们为每个列名添加了标题。我们可以通过导航到指定的 URL 来验证输出,其中第一行包含每个列的标题。

MySQL Export Table to CSV

将 MySQL 表导出为 CSV 格式

MySQL OUTFILE 也允许我们导出表而不指定任何列名。我们可以使用以下语法将表导出为 CSV 文件格式:

如果我们执行上述语句,我们的命令行工具将产生以下结果。这意味着指定的表包含六行,已导出到 employee_backup.csv 文件中。

MySQL Export Table to CSV

处理 Null 值

有时结果集中的字段值为 NULL,那么目标文件(导出的文件类型)将包含 N 而不是 NULL。我们可以使用 IFNULL 函数将 NULL 值替换为“不适用 (N/A)”来解决此问题。以下语句可以更清楚地说明这一点:

使用 MySQL Workbench 将表导出为 CSV 格式

如果我们不想访问数据库服务器来导出 CSV 文件,MySQL 提供了另一种方法,即使用 MySQL Workbench。Workbench 是一个 GUI 工具,可以在不使用命令行工具的情况下处理 MySQL 数据库。它允许我们将语句的结果集导出为 CSV 格式到我们的本地系统。要做到这一点,我们需要按照以下步骤操作:

  • 运行语句/查询并获取其结果集。
  • 然后在结果面板中,单击“将记录集导出到外部文件”选项。Recordset 用于结果集。
  • 最后,将显示一个新对话框。在这里,我们需要提供文件名及其格式。填写详细信息后,单击保存按钮。下图更清楚地说明了这一点:
MySQL Export Table to CSV

现在,我们可以通过导航到指定路径来验证结果。


下一主题MySQL 子查询