只要一段命令,将mysql数据生成excel文件

数据库操作对程序员来说是再平常不过的事情,但是当有业务人员问我们要数据的时候,那肯定不能冷冰冰的直接把数据给他们,至少要生成一个excel,那么这里我们就用通过快速生成excel文件的命令来解决这个问题。

我们先随手生成一张用例表

CREATE TABLE `t_cm_address` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `key` varchar(255) DEFAULT NULL,
  `address` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

通过这段命令来生成excel

SELECT id,address FROM `t_cm_address` INTO OUTFILE 'D:/a/address.xls'
1 queries executed, 0 success, 1 errors, 0 warnings

查询:select id,address from `t_cm_address` into outfile 'D:/a/address.xls'

错误代码: 1290
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

执行耗时   : 0 sec
传送时间   : 0 sec
总耗时      : 0 sec

很明显,这条指令是有问题的,那我们来根据错误代码寻找一下错误原因。
这句话的大致意思是:
mysql文件的导入和导出路径有默认的设置,即 secure-file-priv,当传入的csv文件路径与默认的路径冲突时就会报错。

这里面的关键词就是secure-file-priv,接下来我们就来找一下它的默认设置:

SHOW VARIABLES LIKE '%secure%';

看一下结果:
在这里插入图片描述
在这里可以看到,secure_file_priv默认是C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\。

关于secure_file_priv这个值,他可以有三种情况:
1.secure_file_prive=null —— 不允许导入导出
2.secure_file_priv=/path/——只允许在默认的目录下导入导出
3.secure_file_priv=’’ ——导入导出无限制
可以看出,我们这里的值就是默认的第二种情况,既然如此,我们就可以来修改一下这条命令

SELECT id,address FROM `t_cm_address` INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/address.xls'
1 queries executed, 1 success, 0 errors, 0 warnings

查询:select id,address from `t_cm_address` into outfile 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/address.xls'4 行受到影响

执行耗时   : 0.001 sec
传送时间   : 0 sec
总耗时      : 0.002 sec

这里是成功了

发布了5 篇原创文章 · 获赞 3 · 访问量 97

猜你喜欢

转载自blog.csdn.net/weixin_42887211/article/details/103255198