MySQL 通过命令导出查询结果
近期由于工作原因,接触到了 Linux 的一些操作,也接触到数据库中有很多结果集时的一些处理。
经常会做的就是将数据库中上亿的数据通过 MySQL 的查询导出,通过 phpMyAdmin 和 SQLyog 等一些数据库管理工具处理起来就不方便了,会经常因为查询太大而丢失数据库链接,所以就只能通过服务器端执行 MySQL 命令的方式来导出了。由于是本地命令行操作,所以数据量再大也不会丢失链接。
在 MySQL 的官方有关于此命令的详细说明,我这里主要记录了我常用到的“SELECT … OUTFILE …”的示例。
1 |
SELECT id, username INTO OUTFILE '/tmp/users.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM users WHERE type=1 ORDER BY id DESC LIMIT 100; |
关于此命令的说明:
1 2 3 |
FIELDS TERMINATED BY ',' #设置字段间的分隔符 OPTIONALLY ENCLOSED BY '"' #字段包围,对数值类型为效 LINES TERMINATED BY '\n' #每行之间的分隔符 |
后面的设置项是可以省略的,默认情况:
字段之间用“制表符(\t)”,无字段包括符,每行之间用“换行符(\n)”。
执行成功后,便会在 OUTFILE 后面设置的文件路径中找到导出的文件。