HOWTO · MySQL

将数据从 MySQL 导出到 CSV 文件

本教程演示如何将数据从 MySQL 导出到 CSV 文件。

本教程将介绍如何将 MySQL 查询的输出保存到 CSV 文件中。

MySQL 有一种简单的技术可以将选择查询的输出导出到服务器上的文本或 CSV 文件中。使用像 INTO OUTFILE 这样的复杂命令,我们可以快速有效地写入 CSV 文件。

让我们创建一个表并将其结果存储在一个 CSV 文件中。

然而,在我们开始之前,我们创建了一个虚拟数据集来使用。在这里,我们创建了一个表,student_details,以及其中的几行。

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

上面的查询创建了一个表以及其中包含学生名字和姓氏的行。为了查看数据中的条目,我们使用以下代码:

SELECT * FROM student_details;

上面的代码将给出以下输出。

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Geo	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

现在,让我们尝试将上述查询的结果保存在一个单独的 CSV 文件中。

MySQL 导出到 CSV

将 MySQL 数据导出为 CSV 的最基本方法之一是使用 OUTFILE 关键字。我们可以使用这个关键字,如下所示:

-- Exporting data into students.csv file
SELECT stu_id, stu_firstName, stu_lastName
FROM student_details
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/abc.csv';

上面的代码将查询的输出写入 C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/ 目录中名为 abc.csv 的文件。

注意
输出文件可能已经存在,也可能不存在于 MySQL Server 8.0 的程序数据的 Uploads 文件夹中。一旦我们执行了上面的代码,就会创建一个文件,其中嵌入了数据。

上述代码的输出生成以下文件:

CSV 文件创建

可以看到上述文件中的数据如下:

查看 CSV 文件

我们也可以尝试格式化 CSV 文件中的输出。这可以在 FIELDS TERMINATED BYENCLOSED BY '""'LINES TERMINATED BY 命令的帮助下完成。我们可以如下使用这些命令:

-- Exporting data into students.csv file
SELECT *
FROM student_details
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/abc.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

上述代码的输出结果为 CSV 文件,如下所示:

更新后的 CSV 文件的视图

正如我们所看到的,上图中的输出使用制表符分隔的文件格式正确。

因此,借助上述方法,我们可以有效地将数据导出到 CSV 文件中。为了找到这个 CSV 文件,我们可以按照上面提到的代码块中 INTO OUTFILE 命令中给出的路径。