Press "Enter" to skip to content

MySQL 直接将查询的结果导出到 Excel

需要将 MySQL 中查询某个表的数据直接导出到 Excel 中:

首先在命令行界面登录 Mysql :

mysql -u 用户名 -p

输入密码后执行以下命令选择需要操作的数据库:

use 数据库名;

进入数据库后可以通过以下命令查看数据库中的表(非必须):

show tables;

通过以下命令可以将查询结果导出到 Excel:

 SELECT * FROM 表名 INTO PUTFILE '导出的文件名(包含路径)';

如: select * from s20z0_options into outfile 'C:/Users/Administrator/Desktop/test.xls';

注意:在执行上面的命令时可能会提示以下错误:

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv

查看官方文档发现,secure_file_priv 参数用于限制 LOAD DATA, SELECT …OUTFILE,  LOAD_FILE() 传到哪个指定目录。

首先执行以下命令查看 secure_file_priv 的值:

show global variables like '%secure_file_priv%';
mysql> show global variables like '%secure_file_priv%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv | NULL  |
+------------------+-------+
1 row in set (0.00 sec)

  • secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。
  • secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。
  • secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出

因为 secure_file_priv 参数是只读参数,不能使用 set global 命令修改:

mysql> set global secure_file_priv='';
ERROR 1238 (HY000): Variable 'secure_file_priv' is a read only variable

因此,只能通过修改配置文件的方法来解决:

打开 my.cnf 或 my.ini 文件,在 [mysqld] 节点下加入以下语句后重启mysql:

secure_file_priv=''

重启后重新执行即可成功导出:

select * from s20z0_options into outfile 'C:/Users/Administrator/Desktop/test.xls';

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注