Navicat 博客

将 MySQL 表导出到 CSV 2022 年 6 月 10 日,由 Robert Gravelle 撰写

CSV 是逗号分隔值(Comma-Separated Values)文件,它允许以表格格式保存数据。长期以来,它一直是在数据库之间传输数据的首选格式。最近,XML 和 JSON 等的互联网驱动格式也获得了很大的关注。CSV 文件非常适合用于数据库,因为它们能非常好地表示表数据,并且几乎可以与任何电子表格程序一起使用,例如 Microsoft Excel 或 Google 表格。在今天的文章中,我们将介绍几种在 MySQL 中将表数据导出到 CSV 的方法。

使用命令行

包括 MySQL 在内的大多数关系数据库都提供导出到 CSV 和从 CSV 导入的命令。

请确保使用 –secure-file-priv 选项启动 MySQL 服务器实例。它使用 LOAD DATA 和 SELECT INTO FILE 等语句设置 MySQL 导入和导出数据的目录。你可以使用以下命令查看当前设置:

SHOW VARIABLES LIKE "secure_file_priv"  

现在要做的就是选择数据并指定输出文件的位置。以下是一个输出整个表的语句:

TABLE tableName 
INTO OUTFILE 'path/outputFile.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';

你还可以像在任何 SELECT 查询中一样筛选数据。以下是一个同时筛选列和值的示例:

SELECT columnName, ...
FROM tableName
WHERE columnName = 'value'
LIMIT 1000
INTO OUTFILE 'path/outputFile.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';

想要包含列标题?使用 UNION 语句很容易做到这一点:

(SELECT 'columnHeading', ...)
UNION
(SELECT column, ...
FROM tableName
INTO OUTFILE 'path-to-file/outputFile.csv’'
FIELDS ENCLOSED BY '"' 
TERMINATED BY ','
ESCAPED BY '"'
LINES TERMINATED BY '\n')

使用 mysqldump

mysqldump 是 MySQL 提供的用于导出表、数据库和整个服务器的命令行实用程序。此外,它还可以用于备份和恢复。你可以在命令提示符或终端中发出以下命令以导出表:

mysqldump -u [username] -p -t -T/path/to/directory [database] [tableName] --fields-terminated-by=,

使用 Navicat 的导出向导

Navicat 16 for MySQL 有一个非常强大的导出(和导入)向导,可以将数据导出到多种格式,包括 .xlsx、.json 和 .sql。若要启动导出向导,请选择相应的表,按右键 -> 导出向导,然后选择格式:

export_formats (50K)

你可以选择导出一个表、整个数据库或介于两者之间的任何表:

select_tables (71K)

如果你不想导出所有列,还可以选择所需的字段:

select_fields (40K)

Navicat 有很多选项,例如包括标题、分隔符、错误处理程序等等:

other_options (49K)

总结

CSV 并不是一种完美的格式,并且确实有一定的局限性。例如,你不能以这种格式保存数据类型或公式。话虽如此,CSV 仍然是一种非常重要的数据传输格式,每个 DBA 都应该熟悉它。

Navicat 文章
频道条目
分享
文章归档